0

내 웹 사이트 (3 개의 웹 사이트, 1 개의 로그인)에 대해 oauth2 서버를 만들고 싶습니다. 나는 서버를 만들었고 FOSUserBundle과 FOSOAuthServerBundle을 사용했다. 나는 지침을 따랐다.Symfony2 oauth2 서버

하지만 문제가 1 개 있습니다./oauth/v2/token을 통해 토큰을 만들 수 있습니다. 괜찮습니다. /oauth/v2/oauth로 갈 수 있지만 웹 사이트로 리디렉션 될 때 examle.com?error=invalid_request & error_description = 응답 + 유형이 잘못되었습니다.

로그인 할 때/로그인하면 로그인되지만 토큰이 생성되지 않습니다. 1 개의 웹 사이트 만 있다면 괜찮을 것이지만 나는 Google과 비슷한 것을 만들고 싶습니다. (지도에 있다면 youtube ... 로그인하려면 accounts.google.com, login으로 리디렉션됩니다. , 다시 웹 사이트로 돌아온다.) 그러나 나는 지금 당장 그것을 어떻게하는지 볼 수 없다. 나는 더 많은 일을 할 필요가 있다고 생각하지만, 정확히 어디에서?

내 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 ] } 

나는 새 로그인 페이지 또는 사용자 공급자를 만들해야 하는가? 감사합니다 :)

+0

것 같다 당신의/oauth/v2/auth에 대한 요청이 잘못되었습니다. 이 기사를 사용하여 FosOauthBundle을 이해했습니다 : http://blog.tankist.de/blog/2013/07/16/oauth2-explained-part-1-principles-and-terminology/. 어쩌면 당신은 그것을 읽을 수 있습니다. 여기/oauth/v2/request params를 쓸 수 있습니까? – loicfavory

+0

물론, /oauth/v2/auth?client_id=CLIENT_ID&redirect_uri=http://www.example.com 내가 갈 때, 나는 (fosuser 로그인 페이지로) 로그인해야한다. fosauthserverbundle의 거부 허용 페이지에서 오류가있는 example.com에서 리디렉션되고 토큰이 생성되지 않습니다. – Arvi89

답변

1

응답 유형을 지정하지 않았습니다.

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 
여기

더 많은 정보는 :

CLIENT_HOST/?code=Yjk2MWU5YjVhODBiN2I0ZDRkYmQ1OGM0NGY4MmUyOGM2NDQ2MmY2ZDg2YjUxYjRiMzAwZTY2MDQxZmUzODg2YQ 

그런 다음 토큰을 요청 :

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

그런 다음 코드로 액세스 할 수 있습니다 : 당신은이 요청을 사용해야합니다 http://blog.tankist.de/blog/2013/07/18/oauth2-explained-part-3-using-oauth2-with-your-bare-hands/

+0

감사합니다. 응답 유형이 없습니다. 감사합니다. :) – Arvi89

+0

오, 마지막으로, 내 웹 사이트라면 허용/거부 단계를 원하지 않습니다. 컨트롤러를 재정 의하여 일부 URI에 대한 예외를 추가해야합니까? 아니면 다른 방법이 있습니까? 편집 : 다른 질문을하기 전에 먼저 블로그의 3 페이지를 읽으십시오. :) – Arvi89

+0

이렇게하려면 인증 요청을 사용하지 않고 토큰을 요청해야합니다. 예를 들어, 당신은 CLIENT에게'client_credentials' grant_type을 허용 할 수 있습니다. 블로그의 모든 페이지를 읽으십시오, 잘 문서화되어 있습니다. 그리고 내 대답은 유효합니다;) – loicfavory