我正在尝试将FOSUserBundle设置为启用FOSOAuthServerBundle的服务器的身份验证提供程序.在我尝试实现FOSUserBundle之前,FOSOAuthServerBundle已经正常工作,而且FOSUserBundle也没有FOSOAuthServerBundle工作,但是我无法让他们一起工作.
我的问题是在下面的security.yml中的oauth_authorize:firewall中的身份验证提供程序应该指定什么?
# 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 ] }
我正在尝试验证用户,而不是客户端.非常感谢.
您应该在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 authentication required”}