FOSuserbundle登录表& SamlBundle SSO登录

时间:2017-11-15 01:24:28

标签: symfony fosuserbundle

我正在开发一个基于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

即使我没有使用Single Sign-On,也会执行backend_samlservice。 当我使用ID&登录网站的密码,我将被重定向到登录页面。

我必须添加一些东西吗?

谢谢你的赞美诗。

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题。

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