跨多个微服务使用JWT身份验证

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

我已经在网上搜索了有关此问题的答案,但没有什么与我的设置非常相似。

所以我有一个单页应用程序和3个服务:

  1. 后端服务-服务A
  2. SPA的静态文件服务-服务B
  3. 认证服务-服务C

流程如下:

  • 用户通过转到服务B的/访问该站点,将重定向到服务B的/login
  • 用户输入凭据,然后将它们发送到服务C以执行身份验证过程并获取用户的权限,此数据将通过JWT发送。
  • 然后,服务B将其放入Cookie中,并将其返回给用户的浏览器。
  • 然后,用户执行需要JWT的任务,因此我必须将该cookie发送到服务A,但是有一个问题,我不能这样做,该cookie仅用于服务A。

https://auth0.com/docs/security/store-tokens-此链接是我发现的一个源示例,该源正在谈论SPA令牌存储位置的问题。它说,如果:

,我应该使用cookie来存储JWT。
  • 如果有我自己的后端
  • 如果后端与站点本身在同一域中。

问题是我的后端有一个不同的URL,这是一个完全不同的服务,因此使用cookie不会成为解决方案,或者至少在我看来是这样。

然后说:

如果您的单页应用程序完全具有后端服务器,则应该在服务器端使用授权代码流,带有代码交换证明密钥的授权代码流(PKCE)或混合流来处理令牌。

这里的问题是他们甚至没有提到如何存储JWT以及在何处存储JWT,因此我可以从多个域访问它。

我还没有找到一种干净的方法来将该JWT保存在用户的浏览器中,并在我正在执行的每个请求中将其发送到后端。

我需要的解决方案是以安全的方式将JWT保存在用户的浏览器中,允许我将其发送到所需的任何后端服务。

感谢您的阅读和提供帮助!

authentication architecture jwt authorization distributed-system
1个回答
1
投票
然后您可以在后端服务中拥有一个中间件,该中间件将其转换为Authorization标头,以便查看它的库继续工作。
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.