我正在开发一个基于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和密码登录网站时,我将被重定向到登录页面 .
我需要添加一些东西吗?
谢谢你的冬天 .
1 回答
我已经解决了这个问题 .
重点是SimpleSAML_Session . 我不得不像这样清理会话 .
https://simplesamlphp.org/docs/stable/simplesamlphp-sp#section_6
我在SamlAuth.php上添加了这段代码(pdias / saml-bundle / PDias / SamlBundle / Saml) . 然后它开始工作了 .