我使用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中是正确且安全的决定。
答案 0 :(得分:1)
访问令牌供执行休息呼叫的用户代理使用。他们可以安全地存储访问令牌(大多数情况下,将其存储在安全服务器上的内存中),并将每次访问时将该令牌传递给服务器。
也就是说,您的应用程序不应使用该令牌并将其以Cookie的形式发送到浏览器。
如果您使用的是implicit_grant,则您的应用程序被认为是安全性较低的,因为不需要客户端凭据即可提取令牌。
在这种情况下,我建议将其保存在应用程序的内存中。如果应用程序必须存储它(以免重新加载等),请考虑使用local session storage
最坏的情况local storage将在浏览器关闭后继续存在。
但我认为您不需要在这里使用cookie。因为令牌是通过带有Authorization: Bearer AbCdEf123456
UINT16 myarray[] = { 0,1,2,3,4,5,6, ..., n };
std::vector<UINT16> myvect(myarray[3], myarray[3] + 16);
希望这会有所帮助