2016-06-19 19 views
0

Ich versuche eine Spring Boot-Anwendung zu schreiben, die Google Single Sign On (SSO) zur Authentifizierung von Benutzern verwendet (es könnte jeder andere SSO-Anbieter sein, wie Facebook - in diesem Beispiel wird nur Google verwendet).Spring Boot und Google SSO

Ich folgte einige Tutorials und kam mit einem sehr einfachen Aufbau auf:

appplication.properties:

security.oauth2.client.client-id: xxx 
security.oauth2.client.client-secret: yyy 
security.oauth2.client.access-token-uri=https://www.googleapis.com/oauth2/v3/token 
security.oauth2.client.user-authorization-uri=https://accounts.google.com/o/oauth2/auth 
security.oauth2.client.client-authentication-scheme=query 
security.oauth2.client.scope=profile,email 
security.oauth2.resource.user-info-uri=https://www.googleapis.com/plus/v1/people/me 
security.oauth2.resource.prefer-token-info=false 

-Controller:

@RestController 
public class ExampleController { 

    @RequestMapping("/") 
    String hello(OAuth2Authentication authentication) { 
     return "Hello " + authentication.getName(); 
    } 

    @RequestMapping("/details") 
    Object details(OAuth2Authentication authentication) { 
     return authentication.getUserAuthentication(); 
    } 
} 

Alles funktioniert in der Fein Browser und ich werde aufgefordert, meine Google-Anmeldeinformationen und erst danach ich kann auf meine Endpunkte zugreifen.

Das Problem ist, dass ich gerne auch programmatisch auf diese API zugreifen möchte (zum Beispiel mit oder RestClient).

Ich habe versucht, die folgenden:

curl xxx:[email protected]:8080/my-api/oauth/token -d grant_type=client_credentials 

aber bekam folgende Antwort:

{"timestamp":1466365089477,"status":403,"error":"Forbidden","message":"Expected CSRF token not found. Has your session expired?","path":"/my-api/oauth/token"} 

ich einige gute Dokumentation oder Tutorials zu finden bin kämpfen, wie mit SSO Frühlings-Boot-Apis programmatisch zu arbeiten. Könnte jemand erklären, was ich verpasse oder auf ein funktionierendes Tutorial mit einem voll funktionsfähigen Multi-User-API-Beispiel zeigen?

Antwort

1

Haben Sie sich die Hosting an Authorization Server OAuth 2 und SocialApplication.java Beispiele angesehen, die Teil von Spring Boot sind?

In diesem Beispiel wird ein Server konfiguriert, der OAuth-Token mithilfe der @EnableAuthorizationServer-Annotation erteilen kann.

Es gibt auch zwei curl Beispiele, die zeigen, wie ein Client kann ein Zugriffstoken anfordern:

$ curl acme:[email protected]:8080/oauth/token -d grant_type=client_credentials 
{"access_token":"370592fd-b9f8-452d-816a-4fd5c6b4b8a6","token_type":"bearer","expires_in":43199,"scope":"read write"} 

$ curl acme:[email protected]:8080/oauth/token -d grant_type=password -d username=user -d password=... 
{"access_token":"aa49e025-c4fe-4892-86af-15af2e6b72a2","token_type":"bearer","refresh_token":"97a9f978-7aad-4af7-9329-78ff2ce9962d","expires_in":43199,"scope":"read write"} 
+0

Danke für den Link. Werde es später testen, aber es sieht vielversprechend aus! – Smajl

+0

Scheint zu arbeiten, aber ich kann immer noch nicht herausfinden, wie ich meine Rest-Client-Anfrage schreiben (cUrl oder ähnliches Dienstprogramm), um mit der API zu verbinden ... – Smajl