2016-09-28 28 views
1

我正在實現spring oauth2來保護我的休息api。基本上我限制了對特定用戶使用rest api,而不是限制每個用戶。使用javascript集成Spring Oauth2實現和HTML前端

我已經實現了後端並使用spring oauth2保護了我的api。

我按照以下步驟操作:
1)發送包含5個參數的GET請求。

本地主機:8080/SpringRestSecurityOauth /的OAuth /令牌grant_type =密碼&的client_id = Awyi123nasdk89 & client_secret = asdj39m32 @#$ S &用戶名=拉胡爾@ gmail的&密碼=拉胡爾@ 9831

2)服務器驗證用戶在spring security的幫助下返回json響應和訪問代碼。

{ 「的access_token」: 「22cb0d50-5bb9-463d-8c4a-8ddd680f553f」
「token_type」: 「承載」,
「refresh_token」: 「7ac7940a-d29d-4a4c-9a47-25a2167c8c49」,
「expires_in」:119
}


3)我通過傳遞此訪問令牌作爲參數訪問受保護的資源,請求是這樣的:

本地主機:8080/SpringRestSecurityOauth/API /用戶/ ?access_token = 8c191a0f-ebe8-42cb-bc18-8e80f2c4238e

4)如果令牌過期,用戶需要使用其在步驟(2)中接受的刷新令牌獲取新令牌。到期後,新的訪問令牌請求看起來是這樣的:

本地主機:8080/SpringRestSecurityOauth/OAuth的/令牌grant_type = refresh_token &的client_id = restapp & client_secret = restapp & refresh_token = 7ac7940a-d29d-4a4c-9a47-25a2167c8c49

以上所有步驟都正常工作。現在我需要在客戶端實現這一點。這樣一個特定的客戶端就可以訪問這個呼叫。我使用HTML/CSS作爲客戶端技術。

客戶端如何獲取訪問令牌?它應該存儲在瀏覽器本地存儲中嗎?或者每次進行其他呼叫時都應該生成它?

任何例子都會幫助我進一步進行。

回答

0

我正在像你一樣執行我的項目。我使用angularjs並從響應json獲取訪問令牌,然後將其存儲到cookie中。 此鏈接爲您提供示例代碼:http://www.baeldung.com/rest-api-spring-oauth2-angularjs。 (請參閱前端 - 密碼流程)。

因爲刷新令牌應該保密並且客戶端是html應用程序,所以您應該看到此鏈接http://www.baeldung.com/spring-security-oauth2-refresh-token-angular-js用於處理刷新令牌。

對於html客戶端,當訪問令牌過期時使用刷新令牌獲得訪問令牌後,我使用http-auth-interceptor([http://witoldsz.github.io/angular-http-auth/))重試所有其餘請求由於過期的訪問令牌而失敗。

對不起,我沒有足夠的聲望發佈超過2個鏈接。