2017-04-21 90 views
2

我正在開發一個解決方案,它具有:授權服務器(AS),資源服務器和兩個客戶端。這兩個客戶端是:帶有Angular 2的Web應用程序和帶有Angular 2 + Ionic 2的移動應用程序。我已經開始開發遵循此示例的授權服務器https://github.com/Baeldung/spring-security-oauthOAuth2密碼授予和基本驗證

對於這兩個客戶端,我決定使用「密碼代碼授予「,因爲客戶端是AS所信任的。

但現在我有一個問題,在應用程序上存儲「客戶端密碼」。由於API(... /的OAuth /令牌)是由基本身份驗證,這樣我問一個令牌的,因爲我需要發送類似的東西,每次擔保:

curl.exe -v -u client_id:client_secret http://localhost:8080/backend/oauth/token -d grant_type=password -d client_id=client_id -d username=admin -d password=admin 

所以,問題是:

  1. 我可以在哪裏安全地存儲應用程序上的客戶端密碼?
  2. 從oauth API中移除基本身份驗證安全嗎?
  3. 我用另一種代碼授權類型嗎?

謝謝 保羅

回答

0

應用程序在瀏覽器中運行(角)不能夠保持自己的祕密的安全,所以我會選擇了OAuth2隱流。隱式流程需要使用HTTPS與授權服務器通信,因爲令牌通過網絡傳輸。

您不應該從令牌端點中刪除身份驗證 - 它會危及其他流類型。例如,授權授權流程不要求客戶端由HTTPS提供服務,並且任何人都可以看到授權碼,因此令牌端點祕密在那裏很重要(資源服務器必須使用HTTPS請求令牌)。

使用隱式流程,您必須檢查訪問令牌的有效時間,並在當前訪問令牌到期前請求新的訪問令牌。例如使用prompt=none驗證請求參數。