1

我将 FOSRestbundle 与 mopa/wsse-authentication-bundle(WSSE 身份验证)一起使用。

一切正常(身份验证和 RESTful api)。但我想公开 1 个特定路径(无需身份验证)。

我要公开的路径:^/api/users

我尝试了以下设置,但我仍然得到 api/users 路径的 403 Forbidden 状态。(安全.yml)

    jms_security_extra:
            secure_all_services: false
            expressions: true

    security:
            encoders:
                    ***\UserBundle\Entity\User: plaintext

            role_hierarchy:
                    ROLE_USER:        [ROLE_API_USER]

            providers:
                    ***_users:
                            entity: { class: UserBundle:User }

            firewalls:
                    wsse_secured:
                            pattern:   ^/api
                            anonymous: true
                            stateless:  true
                            wsse:
                                    nonce_dir: null
                                    lifetime: 300
                                    provider: ***_users

            access_control:
                    - { path: ^/api/users, roles: IS_AUTHENTICATED_ANONYMOUSLY }
                    - { path: ^/(css|js), roles: IS_AUTHENTICATED_ANONYMOUSLY }
                    - { path: ^/(_wdt|_profiler)
4

1 回答 1

0

如果您想公开 api/users/ 页面,每个人都可以访问而无需任何身份验证,您可以考虑避开 WSSE 身份验证。为此,您可以指定不应用 WSSE 身份验证的 url 模式。例如,在下面的示例中,我指定了一种模式来跳过形式为“api/users/”的 URL。

简而言之,我建议使用“模式”跳过“用户”页面的 WSSE 身份验证

wsse_secured:
            pattern:   ^/api/[^users].*
            wsse:
                 nonce_dir: null
                 lifetime: 300
                 provider: ***_users
于 2015-01-20T13:39:13.547 回答