对于 Angular 应用程序,我应该在哪里存储从 Auth Server 生成的 JWT 令牌?

For Angular applications where should I store the JWT Tokens those are generated from Auth Server?

我有一个带有登录页面(用户名和密码)的应用程序。身份验证成功后,我会收到来自身份验证服务器的 access_token、过期时间、刷新令牌和其他声明。

我需要在浏览器中的什么地方存储这些令牌,以便对于其他 API 请求,我可以提取 access_token 并附加到 [=21] 的 header =]?

将这些令牌存储在浏览器的 localStorage 中是否安全?

因为当我们在 Developer tools (chrome) 中查看这些标记时,它们会暴露出来。

总之,把token放在Local Storage就可以了

  • 为什么?您需要了解 XXS(跨站点脚本) 攻击。 本地存储只能由 JavaScript 在您的计算机上运行的代码访问 领域。恶意 JavaScript 代码启动时会发生 XXS 攻击 到您的站点,并从本地存储中窃取您的令牌。哪里可以 这些恶意代码从何而来?来源1:CDN和第三方 图书馆。不要使用粗略的第三方代码,你会没事的。 来源 2:黑客 post 您网站上的恶意代码使用 <script> 标签。你不必担心这个,因为 Angular 忽略所有 <script> 标签.
  • 您可能听说过 XSRF/CSRF(跨站请求伪造) 攻击。仅当您使用 cookie 存储令牌时才担心这一点。当黑客向用户发送您网站的 post 请求 link 并且用户点击它时,就会发生这种情况。由于浏览器总是发送同一域中的 cookie,黑客 post 请求通过身份验证。

您可以自行搜索XSS和XSRF。非常有趣的主题。