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) 上添加了这段代码。然后就开始工作了。