SPA和刷新令牌

时间:2017-09-18 14:56:43

标签: oauth-2.0 single-page-application

我正在创建Angular单页面应用程序,我想在OAUTH 2.0中使用JWT(JSON Web令牌)。我正在阅读最佳实践,并找到了OAuth 0文章,该文章应该对其有所帮助https://auth0.com/docs/api-auth/which-oauth-flow-to-use

我的应用应该能够登录用户并让他记录60天。我知道在浏览器中存储访问令牌60天不是很安全,建议让它短暂存在。所以我想使用Refresh Token并将其存储在HttpOnly Secure Cookie中,不允许从客户端Javascript读取它,但是在这篇auth0文章中他们说这是非常不安全的,SPA不应该使用Refresh令牌,但是他们没有描述办法?如果我的auth API代码交换端点在JSON响应中返回access_token但在HttpOnly cookie中返回refresh_token怎么办?这样我就不需要公开任何系统密钥,因为它们存储在auth后端API中。

有人可以提供更多信息并说明在HttpOnly Secure cookie中存储刷新令牌是否安全?

2 个答案:

答案 0 :(得分:3)

SPA应用程序使用OAuth2隐式流,并且此流没有刷新令牌,因为公共客户端应用程序无法安全地存储系统密码。我建议实现OpenID Connect隐式流并将JWT令牌存储在本地存储中。此令牌更安全,任何其他应用程序都无法使用。您还可以加密令牌以保护敏感信息。如果您正在寻找更多信息,请访问简短的链接文章https://www.linkedin.com/pulse/microservices-security-openid-connect-manish-singh

答案 1 :(得分:2)

除了使用OpenID Connect的@ManishSingh答案之外,您应该使用PKCE,而不需要客户端密码。