Symfony2 oauth2服务器

时间:2015-01-20 06:53:12

标签: symfony login oauth-2.0 fosuserbundle fosoauthserverbundle

我想为我的网站创建一个oauth2服务器(3个网站,1个登录)。我创建了服务器,我使用了FOSUserBundle和FOSOAuthServerBundle,我按照说明操作。

但我有一个问题。我可以通过/ oauth / v2 / token创建令牌,这很好。 我可以去/ oauth / v2 / oauth,但当我被重定向到网站时,我有examle.com?error=invalid_request&error_description=Invalid+response+type。

如果我登录/ login,我将登录,但不会创建任何令牌。如果我只有一个网站,这样会很好,但我想制作更像谷歌的东西(如果你在地图上,youtube ...如果你想登录,你被重定向到accounts.google.com,登录,然后回到网站),但我现在看不出怎么做。我想我需要做更多的工作,但到底在哪里呢?

我的security.yml现在:

security:
encoders:
    FOS\UserBundle\Model\UserInterface: sha512

role_hierarchy:
    ROLE_ADMIN:       ROLE_USER
    ROLE_SUPER_ADMIN: ROLE_ADMIN

providers:
    fos_userbundle:
        id: fos_user.user_provider.username

firewalls:
    main:
        pattern: ^/
        form_login:
            provider: fos_userbundle
            csrf_provider: form.csrf_provider
        logout:       true
        anonymous:    true

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

    oauth_authorize:
        pattern:    ^/oauth/v2/auth
        anonymous: true

    api:
        pattern:    ^/api
        fos_oauth:  true
        stateless:  true
        anonymous:  false # can be omitted as its default value

access_control:
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/admin/, role: ROLE_ADMIN }
    - { path: ^/api, roles: [ IS_AUTHENTICATED_FULLY ] }

我应该创建新的登录页面还是用户提供商?谢谢:))

1 个答案:

答案 0 :(得分:1)

您没有指定响应类型。您应该使用此请求:

PROVIDER_HOST/oauth/v2/auth?client_id=CLIENT_ID&response_type=code&redirect_uri=CLIENT_HOST

然后使用代码访问:

CLIENT_HOST/?code=Yjk2MWU5YjVhODBiN2I0ZDRkYmQ1OGM0NGY4MmUyOGM2NDQ2MmY2ZDg2YjUxYjRiMzAwZTY2MDQxZmUzODg2YQ

然后询问令牌:

PROVIDER_HOST/oauth/v2/token?client_id=CLIENT_ID&client_secret=CLIENT_SECRET&grant_type=authorization_code&redirect_uri=http%3A%2F%2Fclinet.local%2F&code=CODE

此处有更多信息:http://blog.tankist.de/blog/2013/07/18/oauth2-explained-part-3-using-oauth2-with-your-bare-hands/