2016-06-19 184 views
0

我正在嘗試編寫一個Spring Boot應用程序,它將使用Google單一登錄(SSO)對用戶進行身份驗證(可能是任何其他SSO提供程序,如Facebook--此示例僅使用Google)。Spring Boot和Google SSO

我跟着幾個教程和一個非常基本的設置提出了:

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 

控制器

@RestController 
public class ExampleController { 

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

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

一切正常,在瀏覽器,我會提示輸入我的Google憑據,只有在這之後我才能看到可以訪問我的端點。

問題是我想以編程方式訪問此API(例如使用cUrlRestClient)。

我試過如下:

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

,但得到如下回應:

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

我在努力尋找如何與SSO春天引導蜜蜂編程工作的一些好的文檔或教程。有人可以解釋我缺少的東西嗎?或者指向一些具有完整功能的多用戶API示例的工作教程?

回答

1

你看過Hosting an Authorization Server OAuth 2SocialApplication.java是Spring Boot的一部分嗎?

本示例配置可以使用@EnableAuthorizationServer批註授予OAuth令牌的服務器。

還有兩個curl示例說明客戶機可以請求訪問令牌:

$ 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

感謝您的鏈接。稍後會進行測試,但看起來很有希望! – Smajl

+0

似乎工作,但我仍然無法弄清楚如何編寫我的休息客戶端請求(cUrl或類似的實用工具)連接到API ... – Smajl