閱讀651 返回首頁    go 技術社區[雲棲]


《Spring Boot官方指南》28.1 – 28.2

28.1 OAuth2

如果您的類路徑上有’spring-security-oauth2’,您可以利用一些自動配置來使設置授權或資源服務器變得容易。 詳細信息請見 Spring Security OAuth 2 Developers Guide.

28.1.1 授權服務器

使用’@EnableAuthorizationServer’注解 並設置’security.oauth2.client.client-id’和’security.oauth2.client.client-secret’屬性來創建授權服務器並授予你需要使用的訪問令牌 。客戶端將為您注冊在內存倉庫中。

完成後,您將能夠使用客戶端憑據創建訪問令牌,例如:

$ curl client:[email protected]/*  */:8080/oauth/token -d grant_type=password -d username=user -d password=pwd

‘/ token’端點的基本認證憑證是’client-id’和’client-secret’。用戶證書是Spring Security的標準用戶詳細信息(在Spring Boot中用戶名默認是’user’以及隨機的密碼)。

要關閉自動配置並自行配置授權服務器功能,隻需添加類型為’AuthorizationServerConfigurer’的’@Bean’。

28.1.2 資源服務器

要使用訪問令牌,您需要一個資源服務器(可以與授權服務器相同)。創建資源服務器很容易,隻需添加’@EnableResourceServer’注解並提供一些配置以允許服務器解碼訪問令牌。如果你的應用程序也是一個授權服務器,它會知道如何解碼令牌,所以不必做任何事情。如果您的應用程序是獨立服務,那麼您需要給它更多的配置,如以下選項之一:

  • 使用’/ me’資源’的security.oauth2.resource.user-info-uri’(例如在PWS上的’https://uaa.run.pivotal.io/userinfo’)
  • 使用令牌來解碼端點的’security.oauth2.resource.token-info-uri’(例如,PWS上的’https://uaa.run.pivotal.io/check_token’)。

如果你同時指定’user-info-uri’和’token-info-uri’,你可以設置一個標誌來標示更喜歡哪個(’prefer-token-info = true’是默認值) 。

或者(如果令牌是JWT,而不是’user-info-uri’或’token-info-uri’的話)可以配置“security.oauth2.resource.jwt.key-value”以便在本地解碼它們(其中鍵是驗證密鑰)。驗證密鑰值要麼是對稱機密,要麼是PEM編碼的RSA公鑰。 如果你沒有密鑰,它將是公開的,你可以提供一個帶有’security.oauth2.resource.jwt.key-uri’的URI從那裏下載(作為一個帶有’value’字段的JSON對象)。例如。 在PWS上:

$ curl https://uaa.run.pivotal.io/token_key
{"alg":"SHA256withRSA","value":"-----BEGIN PUBLIC KEY-----\nMIIBI...\n-----END PUBLIC KEY-----\n"}
警告
如果使用’security.oauth2.resource.jwt.key-uri’,授權服務器需要在應用程序啟動時運行。 如果它找不到key那麼它會記錄一個警告日誌,並告訴你該怎麼做來修複這個問題。

 

28.2 用戶信息中的令牌類型

Google和某些其他第三方身份提供商,對頭部中發送到用戶信息端點的令牌類型名稱更嚴格。默認值為“Bearer”,它適合大多數供應商和匹配的規範,如果你需要更改它,你可以設置“security.oauth2.resource.token-type”。

轉載自 並發編程網 - ifeve.com

最後更新:2017-05-19 12:04:50

  上一篇:go  在 Ubuntu 16.04 中安裝支持 CPU 和 GPU 的 Google TensorFlow 神經網絡軟件
  下一篇:go  Spring Boot 整合 Elasticsearch,實現 function score query 權重分查詢