如何使用 JWT 在微服务中构建 authenticate/authorise?

How to architect authenticate/authorise in microservice using JWT?

如何进行无状态架构设计,以便如果用户 (A) 已登录并且 Json 网络令牌由服务器 (X1) 生成并返回给用户A。再次,用户 A 将请求发送到服务器,服务器(X2)无需重新验证用户即可达到目的。 使架构具有高度的横向扩展性。

通常您会有一个服务来完成与身份验证相关的所有工作。基本上这意味着 X1 和 X2 将调用该服务来验证用户或验证现有的身份验证。唯一应该在 X1 和 X2 上执行的是令牌验证。令牌可以有效、有效和过期或无效。如果有效,您只需执行必要的工作,而不管特定的服务器。如果无效,则拒绝请求,如果过期,则将用户重定向到重新验证。

但是,如果您询问的是特定于环境的详细信息,而您的问题是 X2 没有 X1 具有的某些特定加密密钥或类似的东西,那么您忘记提及您使用什么框架来获取 JWT .

使其工作的要求很少:

  1. 如前所述,X1和X2会使用内部服务A进行凭证验证。

  2. 绑定到 A 的数据源的 user/api 客户端记录中会有盐。

  3. X1 和 X2 加密密钥应该共享,并且它们应该使用 JWT 的 sub 对象的相同结构。 iss 对象也应该被检查(通常绑定到请求身份验证的用户所绑定的 api 客户端)。验证逻辑应在 X1 和 X2 之间共享。

令牌中包含伪造的数据 - 如果它由同一服务 A 提供,然后进行散列和结构化,然后由 X1 和 X2 以相同方式检查。