如果服务之间的令牌过期了怎么办?

13

我一直在学习服务/微服务之间的通信。

API网关对请求进行身份验证,并在每个请求中传递一个访问令牌(例如JSON Web Token),以安全地标识请求者。服务可以在其向其他服务发出的请求中包含访问令牌。

via http://microservices.io

我将用户的access-token传递给下游服务,因此它看起来更或多或少像这样:

enter image description here

但是,如果token在微服务之间过期了怎么办?

有很多种方法可以解决这个问题,这些方法似乎是合理的:

  • 验证用户的访问令牌并在API网关中创建短期JWT(内部令牌)

  • 每个微服务都验证JWT并根据范围规则生成自己的JWT与其他微服务通信

enter image description here

因此,我们将拥有一个验证或请求令牌的Auth服务。

问题是:

为了确保令牌在通过服务的过程中不会过期,我们可以在API网关层中进行检查:如果令牌在n(〜1)分钟内过期,则拒绝该令牌,因此用户必须使用更新令牌来获取新的访问令牌。这意味着令牌始终对于完成请求所需的时间而言都是有效的。这种方法的优缺点是什么?

1个回答

8
我有同样的问题,所以谷歌将我带到了这里。希望半年后回答这个问题不会太晚。
我的回答不能算是一个“答案”,但我希望我的想法可以启发任何人的灵感。所以这是一种“思路分享”。
我认为处理这个问题有两种方式:
1. 如果令牌将在10分钟后过期,在第6分钟刷新它(只是举例)。因此通过调整过期时间和刷新时间来确保你所说的情况永远不会发生。 2. 另一种方法是调整系统架构。将API分为内部API和外部API。所有外部API的令牌都将在API网关进行检查,然后内部服务中就没有令牌了。
我认为我们有很多方法来避免这个问题。基于不同的项目要求,我们应该考虑使用不同的安全设计。所以并没有“万能药”。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接