NestJS-使用微服务的JWT身份验证

时间:2020-07-20 20:15:36

标签: jwt microservices nestjs

我目前正在使用NestJS的微服务和身份验证,但遇到了一个尚无明确解决方案的问题。

假设我有一个API网关,用于平衡对多个微服务的调用。 我想启用身份验证(通过JWT令牌),并获取我可能在任何微服务上调用的每个进程的用户信息。

我面临的问题是我不知道在哪里解码令牌。

  • API网关是否应该对令牌进行解码并通过将用户数据附加到微服务来将HTTP请求代理到微服务?
  • 终端微服务应该解码令牌而不是网关吗?

我对实现这两个方法充满信心,我只是无法弄清它们是否是好的做法,或者是否有我尚未想到的更好的解决方案。

1 个答案:

答案 0 :(得分:2)

最好的方法是使用下面的流程。

  1. 请求从客户端转到API网关。
  2. API网关将调用auth微服务以解码令牌。
  3. Auth微服务将验证此令牌并对其进行解码。然后调用db获取用户数据,然后将用户数据发送到API网关。
  4. 现在,API网关具有用户数据。然后将插入诸如x-user-idx-user-namex-user-email之类的标头。并致电microservice-x。

让我们说microservice-x将创建并记录在表中,然后调用microservice-z发送电子邮件。

  1. Microservice-x将收到请求在表中为用户ID x-user-id创建记录。然后致电microservice-z通过x-user-email发送电子邮件。

enter image description here