[英]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.