Symfony2使用CASH和登录/密码身份验证

时间:2014-10-09 11:56:42

标签: symfony authentication login cas

我需要使用两种身份验证协议为我的网站创建一个门户网站。

  • 使用登录/密码的标准方法
  • 使用CAS服务

因此,当用户到达主页时,他可以选择这两种身份验证系统中的一种。

我对symfony2的安全性不是很熟练,所以我按照Symfony文档编写了这段代码:

#Security.yml

security:
    encoders:
        Symfony\Component\Security\Core\User\User: plaintext

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

    firewalls:
        secure_area:
            pattern:    ^/
            anonymous: ~
            context: form_auth
            form_login:
                login_path:  /form_login
                check_path:  /form_login_check
            logout:
                path: /logout
                target: /riac

    access_control:
        - { path: ^/riac/admin, roles: ROLE_ADMIN }

    providers:
        in_memory:
            memory:
                users:
                    bob:  { password: bob, roles: 'ROLE_ADMIN' }
        main:
            entity: { class: Riac\HomeBundle\Entity\Login, property: username }

这个适用于登录/密码方法。

要创建CAS协议,我找到了BeSimpleSsoAuthBundle,但......问题......

所以我已经阅读了安装文档来实现这个,我已经成功单独运行它(没有登录/密码协议)。现在我要一次实现这两个协议,我已经编写了这段代码:

security:
    encoders:
        Symfony\Component\Security\Core\User\User: plaintext

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

    firewalls:

        cas_secure_area:
            pattern:    ^/
            anonymous: ~
            context: cas_auth
            trusted_sso:
                manager: admin_sso
                login_action: false
                logout_action: false
                login_path:  /cas_login
                check_path:  /cas_login_check
                create_users: true
                created_users_roles: [ROLE_USER, ROLE_ADMIN]
                check_path: /form_login_check
            logout:
                path: /logout
                target: /riac

        secure_area:
            pattern:    ^/
            anonymous: ~
            context: form_auth
            form_login:
                login_path:  /form_login
                check_path:  /form_login_check
            logout:
                path: /logout
                target: /riac

    access_control:
        - { path: ^/riac/admin, roles: ROLE_ADMIN }

    providers:
        in_memory:
            memory:
                users:
                    bob:  { password: bob, roles: 'ROLE_ADMIN' }
        main:
            entity: { class: Riac\HomeBundle\Entity\Login, property: username }

但它没有工作(注销问题,找不到login_check,难以确定使用哪种方法)。

所以我认为这不是最好的方法,但我不知道这是怎么回事。你能帮帮我吗?

0 个答案:

没有答案