使用FOSOAuth2和FOSUser

时间:2016-04-15 12:50:18

标签: oauth-2.0 symfony

我正在尝试使FOSUserBundle与FOSOAuthServerBundle一起使用 ,我正在努力与oauth_authorize,获得302重定向循环。

以下是我在security.yml(简化)中的内容:

firewalls:
    oauth_authorize:
      pattern:    ^/oauth/v2/auth
      form_login:
        provider: fos_userbundle
        check_path: /oauth/v2/auth/login_check
        login_path: /oauth/v2/auth/login

access_control:
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/oauth/v2/auth/login, role: IS_AUTHENTICATED_ANONYMOUSLY }

我必须指定login_path,因为默认/loginoauth_authorize模式不匹配。

我在我的捆绑包中添加了/oauth/v2/auth/login路由,但即使使用虚拟控制器,它也从未被调用过。我只是获得了302次重定向,直到Firefox说它已经足够了。

comments here中有人建议在模式正则表达式的末尾添加$,但路由不匹配。

日志给了我:

  

security.INFO:抛出了AuthenticationException;重定向到身份验证入口点。 {“exception”:“[object](Symfony \ Component \ Security \ Core \ Exception \ AuthenticationCredentialsNotFoundException(code:0):在TokenStorage中找不到令牌。在/ home / arthur / PhpstormProjects / rss-api / vendor / symfony / symfony / src / Symfony / Component / Security / Http / Firewall / AccessListener.php:53)“} []

我错过了什么吗?

编辑:symfony 3.0和oauth-server-bundle 1.5

1 个答案:

答案 0 :(得分:0)

我确实遗漏了一些东西,这个匿名指令阻止防火墙阻止访问。

firewalls:
    oauth_authorize:
      pattern:    ^/oauth/v2/auth
      form_login:
        provider: fos_userbundle
        check_path: /oauth/v2/auth/login_check
        login_path: /oauth/v2/auth/login
      anonymous: true