首页 文章

FOSuserbundle登录表单和SamlBundle SSO登录

提问于
浏览
0

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

  • 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) . 然后它开始工作了 .

相关问题