簡體   English   中英

Spring Security OAuth2在cookie中存儲access_token

[英]Spring Security OAuth2 store access_token in cookie

我使用Spring Security + Angular 當我向/oauth/token發出發布請求並獲得令牌時:

{
    "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NDY5NDQwODYsInVzZXJfbmFtZSI6ImFkbWluIiwiYXV0aG9yaXRpZXMiOlsiUk9MRV9BRE1JTiJdLCJqdGkiOiI4M2VhMTA1MC05NjczLTRlZGItOTlmMS0yNWIzOTQ1ODdjMmUiLCJjbGllbnRfaWQiOiJmcm9udGVuZCIsInNjb3BlIjpbInJlYWQiLCJ3cml0ZSJdfQ.i6v2G70eEgGUt_CdgctcTrGgz_RHs6OuEA8lGHOgVro",
    "token_type": "bearer",
    "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX25hbWUiOiJhZG1pbiIsInNjb3BlIjpbInJlYWQiLCJ3cml0ZSJdLCJhdGkiOiI4M2VhMTA1MC05NjczLTRlZGItOTlmMS0yNWIzOTQ1ODdjMmUiLCJleHAiOjE1NDk1MzI0ODYsImF1dGhvcml0aWVzIjpbIlJPTEVfQURNSU4iXSwianRpIjoiNzQxMDA0NzUtODkxOC00YjM5LTk5NDMtNjAzMWIxMGVjNGQ3IiwiY2xpZW50X2lkIjoiZnJvbnRlbmQifQ.3QOdAL10lQsPSvsFfgyf02gvAanyJ-R1BX_wtF1APB0",
    "expires_in": 3599,
    "scope": "read write",
    "jti": "83ea1050-9673-4edb-99f1-25b394587c2e"
}

我如何在Spring Security方面指定cookie的安裝並在那里保存令牌? 還是我必須像這樣在Angular一側進行操作:

Cookie.set("access_token", token.access_token, expireDate);

正確的做法是什么? 在我看來,將令牌存儲在cookie中是正確和安全的決定。

訪問令牌供執行休息呼叫的用戶代理使用。 他們可以安全地存儲訪問令牌(大多數在安全服務器的內存中完成),並將每次訪問時將該令牌傳遞給服務器。

就是說,您的應用程序不應使用該令牌並將其以Cookie的形式發送到瀏覽器。

如果您使用的是hidden_​​grant,則您的應用程序的安全性較低,因為不需要客戶端憑據即可獲取令牌。

在這種情況下,我建議將其保存在應用程序的內存中。 如果應用程序必須存儲它(以免重新加載等),請考慮使用本地會話存儲

最壞的情況是本地存儲將在瀏覽器關閉后繼續存在。

但我認為您這里不需要Cookie。 因為令牌使用帶有bearer prefix的授權標頭傳遞給API

Authorization: Bearer AbCdEf123456

希望這可以幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM