2015-05-07 7 views
6

Ich entwickle eine App, um über Rest Endpoints auf eigene Ressourcen zuzugreifen.OAuth2 Password Grant Type mit Client_Id & Client_Secret

Benutzer müssen Zugangstoken per E-Mail/Passwort erwerben. Nach erfolgter Authentifizierung-Server-Konfiguration hatte ich diese Beobachtung:

mit:

curl client:[email protected]:9999/uaa/oauth/token -d grant_type=password -d username=user -d password=password 

Ich erhalte die richtige Antwort:

{"access_token":"7541a4f6-e841-41a0-8a54-abf8e0666ed1","token_type":"bearer","refresh_token":"d3fdd7e3-53eb-4e7b-aa45-b524a9e7b316","expires_in":43199,"scope":"openid"} 

jedoch mit:

curl http://localhost:9999/uaa/oauth/token -d grant_type=password -d username=user -d password=password -d client_id=client -d client_secret=secret 

Ich bin den folgenden Fehler erhalten:

DEBUG 4123 --- [nio-9999-exec-7] o.s.s.w.a.ExceptionTranslationFilter : Access is denied (user is anonymous); redirecting to authentication entry point

org.springframework.security.access.AccessDeniedException: Access is denied at org.springframework.security.access.vote.AffirmativeBased.decide(AffirmativeBased.java:83)

Es sieht so aus, als ob die Client-ID & client_secret beim Senden als Parameter nicht erkannt wird. Ist das ein Konfigurationsproblem oder mit der Version von OAuth2 Ich verwende (federsicherheits oauth2, 2.0.5.RELEASE) stoße ich auf

Viele Beispiel zu tun, über das Internet vorschlagen Ansatz ein sollte mit OAuth2 arbeiten.

Thanks :)

Antwort

4

Es gibt keine Methode, um die Kunden gegen den Autorisierungsserver authentifizieren, die von spec zu implementieren ist obligatorisch. Zwei Methoden, die möglicherweise unterstützt werden, sind das HTTP-Basisauthentifizierungsmuster und das HTTP-POST-Parametermuster, das Sie in Ihren Beispielen verwendet haben. Anscheinend unterstützt Spring nur die erste, die von der Dokumentation unterstützt wird: http://projects.spring.io/spring-security-oauth/docs/oauth2.html