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

时间:2019-10-09 07:37:38

标签: security oauth oauth-2.0

我有一个授权服务器,我的客户是一个有角度的应用程序,我不是第三方应用程序。 我使用了这个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_idclient_secret存储在表中。

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

谢谢

1 个答案:

答案 0 :(得分:0)

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

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

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