14

我正在尝试设置FOSUserBundleFOSOAuthServerBundle启用的服务器的身份验证提供程序。在FOSOAuthServerBundle我尝试实施之前,它一直在正常工作,而且我FOSUserBundle也曾FOSUserBundle在没有 的情况下工作过FOSOAuthServerBundle,但我就是无法让它们一起工作。

我的问题是应该为下面的oauth_authorize防火墙中的身份验证提供程序指定什么security.yml

# app/config/security.yml
security:
    providers:
    fos_userbundle:
        id: fos_user.user_provider.username

    encoders:
        FOS\UserBundle\Model\UserInterface: sha512

    firewalls:
        oauth_token:
            pattern:    ^/oauth/v2/token
            security:   false

        oauth_authorize:
            pattern:    ^/oauth/v2/auth

            # WHAT GOES HERE?

        api:
            pattern:    ^/api
            fos_oauth:  true
            stateless:  true

    access_control:
        - { path: ^/api, roles: [ IS_AUTHENTICATED_FULLY ] }

我正在尝试验证用户而不是客户端。

非常感谢。

4

1 回答 1

1

您的 config.yml 中应该有以下内容

fos_user:
   db_driver: orm
   firewall_name: main
   user_class: Zoef\UserBundle\Entity\Userere

像这样的 oauth 服务器

fos_oauth_server:
    db_driver: orm
    client_class:        {PATH TO ENTITY}\Client
    access_token_class:  {PATH TO ENTITY}\AccessToken
    refresh_token_class: {PATH TO ENTITY}\RefreshToken
    auth_code_class:     {PATH TO ENTITY}\AuthCode
        service:
            user_provider: fos_user.user_provider.username

security.yml 应该是这样的:

security:
    encoders:
        FOS\UserBundle\Model\UserInterface: sha512
    providers:
        fos_userbundle:
            id: fos_user.user_provider.username
    firewalls:
        oauth_token:
            pattern:    ^/oauth/v2/token
            security:   false

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

您可以测试它是否有效,因为当您访问任何 url 时,您应该得到如下响应:

{"error":"access_denied","error_description":"需要 OAuth2 身份验证"}

于 2017-01-20T07:50:21.390 回答