安全存储刷新令牌的位置

Where to store refresh token safely

这个 where to store - access token and refresh token in OAuth 2.0 是我一直在寻找的答案,但我有一些不清楚的地方,或者我想多了。

假设我有一个网站 X,它调用 REST api 并将刷新令牌作为 HttpOnly cookie 存储在浏览器中。如果一个恶意的人 M 进入已经以 U 身份登录 X 的其他人的计算机,M 可以去寻找 cookie 并窃取该刷新令牌。然后 M 将能够为 U 检索他想要的所有令牌,他只需要该应用程序的客户端 ID 和客户端密码,他可以从该应用程序的任何其他用户那里获得,例如他自己 M 通过查看进行 GET 新访问令牌调用时 header 的值。对吗?

您不应在浏览器的应用程序 运行 中使用授权码。 Implicit grant 专为此类应用而设计:

  • 要从刷新令牌中获取访问令牌,您需要向需要身份验证(客户端 ID 和客户端机密)的 /token 端点发出请求,并且您无法在浏览器中保证机密安全。
  • /token 端点通常不支持 CORS headers - 您无法通过 JavaScript XHR 调用访问它。
  • 要在原始访问令牌过期时获取新的访问令牌,您可以使用 prompt=none /auth 请求参数。