FOSuserbundle 登录表单和 SamlBundle SSO 登录
FOSuserbundle login form & SamlBundle SSO login
我正在开发一个基于 Symfony2 的自定义会员网站。该网站有两种类型的捆绑包。 FOSuserbundle 和 SamlBundle.
我将 SamlBundle 与 FOSuserbundle 集成在一起。单点登录系统正在运行,但 FOSuserbundle 登录表单无法运行。
这是我的security.yml
security:
encoders:
FOS\UserBundle\Model\UserInterface:
id: app.my_password_encoder
PDias\SamlBundle\Security\User\SamlUser: plaintext
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
providers:
fos_userbundle:
id: fos_user.user_provider.username_email
backend_samlservice:
id: saml.backend.fosuser.provider
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_token_generator: security.csrf.token_manager
require_previous_session: true
login_path: /login
check_path: /login_check
always_use_default_target_path: false
default_target_path: /
use_forward: true
use_referer: false
saml:
provider: backend_samlservice
direct_entry: false
login_path: /login-saml
check_path: /login-check-saml
default_target_path: /
always_use_default_target_path: true
logout:
path: /logout
target: /login
anonymous: true
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
remember_me:
key: '%secret%'
lifetime: 604800 # 1 week
path: /
domain: ~
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/sendemail, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/, role: ROLE_ADMIN }
- { path: ^, role: ROLE_USER }
acl:
connection: default
即使我没有使用单点登录,也会执行 backend_samlservice。
当我使用ID和密码登录网站时,我将被重定向到登录页面。
我需要添加什么吗?
感谢您的回答。
我已经解决了这个问题。
重点是 SimpleSAML_Session。我不得不像这样清理会话。
https://simplesamlphp.org/docs/stable/simplesamlphp-sp#section_6
$session = SimpleSAML_Session::getSessionFromRequest();
$session->cleanup();
我在 SamlAuth.php(pdias/saml-bundle/PDias/SamlBundle/Saml) 上添加了这段代码。然后就开始工作了。
我正在开发一个基于 Symfony2 的自定义会员网站。该网站有两种类型的捆绑包。 FOSuserbundle 和 SamlBundle.
我将 SamlBundle 与 FOSuserbundle 集成在一起。单点登录系统正在运行,但 FOSuserbundle 登录表单无法运行。
这是我的security.yml
security:
encoders:
FOS\UserBundle\Model\UserInterface:
id: app.my_password_encoder
PDias\SamlBundle\Security\User\SamlUser: plaintext
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
providers:
fos_userbundle:
id: fos_user.user_provider.username_email
backend_samlservice:
id: saml.backend.fosuser.provider
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_token_generator: security.csrf.token_manager
require_previous_session: true
login_path: /login
check_path: /login_check
always_use_default_target_path: false
default_target_path: /
use_forward: true
use_referer: false
saml:
provider: backend_samlservice
direct_entry: false
login_path: /login-saml
check_path: /login-check-saml
default_target_path: /
always_use_default_target_path: true
logout:
path: /logout
target: /login
anonymous: true
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
remember_me:
key: '%secret%'
lifetime: 604800 # 1 week
path: /
domain: ~
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/sendemail, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/, role: ROLE_ADMIN }
- { path: ^, role: ROLE_USER }
acl:
connection: default
即使我没有使用单点登录,也会执行 backend_samlservice。 当我使用ID和密码登录网站时,我将被重定向到登录页面。
我需要添加什么吗?
感谢您的回答。
我已经解决了这个问题。
重点是 SimpleSAML_Session。我不得不像这样清理会话。
https://simplesamlphp.org/docs/stable/simplesamlphp-sp#section_6
$session = SimpleSAML_Session::getSessionFromRequest();
$session->cleanup();
我在 SamlAuth.php(pdias/saml-bundle/PDias/SamlBundle/Saml) 上添加了这段代码。然后就开始工作了。