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

时间:2018-04-04 09:00:29

标签: authentication jwt microservices soa

我一直在阅读服务/微服务之间的沟通。

  

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

via http://microservices.io

我将用户的访问令牌传递给下游服务,所以它看起来或多或少是这样的:

enter image description here

但是如果微服务之间的令牌过期怎么办?

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

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

  •   

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

enter image description here

因此我们将使用Auth服务来验证或请求令牌。

任务是:

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

1 个答案:

答案 0 :(得分:1)

我有同样的问题,所以Google引导我到这里。我希望半年后回答这个问题为时不晚。

我不能说这是一个“答案”,但我希望我的想法可以激励任何人。因此,这是一种“思想共享”。

我认为有两种方法可以解决此问题:

  1. 如果令牌将在10分钟后过期,请在6分钟后刷新(仅作为示例)。因此,请通过调整过期时间和刷新时间来确保您所说的情况永远不会发生。

  2. 另一种方法是调整系统架构。将API分为内部和外部。所有外部令牌都将在API网关处进行检查,然后内部服务中没有令牌。

我认为我们有很多方法可以避免此问题提到的问题。根据不同的特定项目需求,我们应考虑使用不同的安全设计。因此,没有“银弹”。