如何使用JWT架构在微服务中进行身份验证/授权?

时间:2017-02-21 18:37:48

标签: web-services architecture microservices scalable

如何创建无状态体系结构设计,以便在用户(A)登录时,服务器生成Json Web令牌( X1 )并返回给用户-A。然后,用户A再次将请求发送到服务器,并且服务器( X2 )提供服务,而无需用户重新进行身份验证。 因此架构在水平方面具有高度可扩展性。

2 个答案:

答案 0 :(得分:0)

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

但是如果你问的是特定环境特定的细节,而你的问题是X2没有X1具有的某些特定的加密密钥,那么你就忘了提到你用来获取JWT的框架。< / p>

答案 1 :(得分:0)

要使它起作用的要求很少:

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

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

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

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