fm / sso-bundle
此包已被废弃,不再维护。未建议替代包。
Symfony2 单点登录捆绑包
v0.1.1
2014-08-14 10:43 UTC
Requires
- php: >=5.3.3
- ext-openssl: *
- symfony/symfony: >=2.1
This package is not auto-updated.
Last update: 2017-10-04 08:13:05 UTC
README
我绝对不是安全专家。我也不擅长,但我不能保证此捆绑包的安全性。如果您想在生产中使用它,请自行承担风险。话虽如此,如果您想为此捆绑包做出贡献以使其更好/更安全,您始终可以创建一个问题或发送一个拉取请求。
描述
此捆绑包提供了一种简单的方法,将单点登录集成到您的网站中。它使用现有的(主)防火墙进行实际的身份验证,并将所有配置的 SSO 路由重定向以通过一次性密码进行身份验证。
安装
使用 composer 安装
php composer.phar require "fm/sso-bundle"
在内核中启用捆绑包
// app/AppKernel.php $bundles[] = new FM\SingleSignOnBundle\FMSingleSignOnBundle();
配置
启用 sso 路由
# app/config/routing.yml: sso: resource: . type: sso otp: # this needs to be the same as the check_path, specified later on in security.yml pattern: /otp/
此捆绑包依赖于现有的防火墙以提供实际的身份验证。为此,您必须配置单点登录登录路径位于该防火墙之后,并确保需要身份验证才能访问该路由。
# app/config/config.yml: fm_single_sign_on: host: mydomain.com login_path: /sso/
# app/config/security.yml security: access_control: - host: mydomain.com path: ^/sso/$ roles: [IS_AUTHENTICATED_FULLY]
# app/config/security.yml: security: firewalls: main: pattern: ^/
这确保用户首先进行身份验证(使用登录表单)。
现在,对于每个防火墙(除了主防火墙之外),您可以使用一次性密码配置单点登录身份验证。您需要提供的是路径和用户提供者。其余的一切都由捆绑包处理。
# app/config/security.yml: security: firewalls: sso: pattern: ^/ fm_sso: provider: main check_path: /otp/ # path where otp will be authenticated
就这样,您完成了!
域名限制
由于我们在多个域名上工作,因此明智的做法是配置防火墙只针对特定域名工作。假设我们有域名 A 和 B。域名 A 是单点登录完成的地点(主防火墙),域名 B 通过一次性密码进行身份验证(sso 防火墙)。我们可以使用请求匹配器服务来将防火墙限制在特定域名上。首先,我们必须配置请求匹配器
# app/config/security.yml security: firewalls: main: request_matcher: my.security.request_matcher.main sso: request_matcher: my.security.request_matcher.sso
现在我们可以将它们实现为服务
# src/MyAwesomeBundle/Resources/config/services.yml services: my.security.request_matcher.main class: %security.matcher.class% arguments: ["/", "domain-a.com"] my.security.request_matcher.sso class: %security.matcher.class% arguments: ["/", "domain-b.com"]