我有一个授权服务器,我的客户是一个有角度的应用程序,我不是第三方应用程序。
我使用了这个symfony捆绑包https://github.com/trikoder/oauth2-bundle
我正在使用授予类型password
。
{
"grant_type":"password", "client_id":"myclientid", "username":"john@doe.com", "password":"foo", "client_secret":"3d4a940.....3c1ea38b5"
}
响应是:
{ "token_type": "Bearer", "expires_in": 60, "access_token": "eyJ0eXAi....nK0Ag", "refresh_token": "def50200dfce4da3....fdc689e5" }
access_token
仅在1分钟内有效,之后客户端需要使用刷新令牌才能与我的api对话:
{ "grant_type":"refresh_token", "client_id":"myclientid", "client_secret":"3d4a940.....3c1ea38b5" "refresh_token": "def50200dfce4da3....fdc689e5" }
client_id
和client_secret
存储在表中。
我的问题是:
将client_id
和client_storage
存储在前角应用程序的本地存储中是否安全/建议?因为它基本上代表了用户凭据,并且如果有人窃取了它们,他们将可以访问api。但是如果没有它们,客户端将无法向api发送请求。
我在网上爬网,但即使在oauth 2文档上也找不到真正的答案
谢谢
答案 0 :(得分:0)
这里有几点: *您的角度应用程序应使用授权码流+打开id连接 *考虑使用更标准的授权服务器和更标准的访问令牌生存期 *会话存储在Safari / Firefox和SPA重新启动方面的问题更少 *是否将会话存储用于令牌取决于数据敏感性+风险分析 *考虑到访问令牌有效的会话时间有时会映射到用户同意
我希望我的这篇文章对您有所帮助-基于可用性和安全性之间的权衡取舍: https://authguidance.com/2019/09/08/ui-token-management/
请随时问我任何后续问题-在此过程中,可能会有所帮助