Oauth2:如何以及在哪里存储客户端ID和密码

问题描述 投票:0回答:1

我有一个授权服务器,我的客户是一个有角度的应用程序。我不是第三方应用程序。我使用了这个symfony套件https://github.com/trikoder/oauth2-bundle我正在使用授权类型password

{ "grant_type":"password", "client_id":"myclientid", "username":"[email protected]", "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_idclient_secret存储在表格中。

我的问题是:将client_idclient_storage存储在前角度应用程序的本地存储中是否安全/建议?因为它基本上代表了用户凭据,并且如果有人窃取了它们,他们将可以访问api。但是如果没有它们,客户端将无法向api发送请求。我搜寻了网络,但即使在oauth 2文档上也找不到真正的答案

谢谢

security oauth oauth-2.0
1个回答
0
投票

这里有几点:*您的角度应用程序应使用授权码流+打开id连接*考虑使用更标准的授权服务器和更标准的访问令牌生存期*会话存储在Safari / Firefox和SPA重新启动方面的问题更少*是否将会话存储用于令牌取决于数据敏感性+风险分析*考虑到访问令牌有效的会话时间有时会映射到用户同意]

我希望我的这篇文章对您有所帮助-基于可用性和安全性之间的权衡:https://authguidance.com/2019/09/08/ui-token-management/

尽管随时问我任何后续问题-在此过程中,可能会有所帮助

© www.soinside.com 2019 - 2024. All rights reserved.