【发布时间】:2017-07-11 13:10:06
【问题描述】:
如何进行无状态架构设计,以便如果用户(A) 登录并且Json Web 令牌由服务器(X1) 生成并返回给用户-A。用户 A 再次将请求发送到服务器,服务器(X2)服务于该目的,而无需让用户重新进行身份验证。 从而使架构具有高度的水平可扩展性。
【问题讨论】:
标签: web-services architecture microservices scalable
如何进行无状态架构设计,以便如果用户(A) 登录并且Json Web 令牌由服务器(X1) 生成并返回给用户-A。用户 A 再次将请求发送到服务器,服务器(X2)服务于该目的,而无需让用户重新进行身份验证。 从而使架构具有高度的水平可扩展性。
【问题讨论】:
标签: web-services architecture microservices scalable
通常,您会拥有一项服务来完成与身份验证相关的所有工作。基本上这意味着 X1 和 X2 将调用该服务来验证用户身份或验证现有身份验证。应该在 X1 和 X2 上执行的唯一事情是验证令牌。令牌可以是有效的、有效的和过期的或无效的。如果它有效,您只需执行必要的工作,而不管特定的服务器。如果它无效,则拒绝请求,如果它已过期,则将用户重定向到重新身份验证。
但是,如果您询问特定环境的详细信息,并且您的问题是 X2 没有 X1 具有的某些特定加密密钥或类似的东西,那么您忘记提及您用于获取 JWT 的框架。
【讨论】:
使其工作的要求很少:
如上所述,X1 和 X2 将使用内部服务 A 进行凭据验证。
绑定到 A 的数据源的用户/api 客户端记录中会有盐。
X1 和 X2 加密密钥应该共享,并且它们应该使用与 JWT 的 sub 对象相同的结构。 iss 对象也应该被检查(通常绑定到用户请求认证所绑定的 api 客户端)。验证的逻辑应该在 X1 和 X2 之间共享。
令牌中伪造了数据 - 如果它由同一个服务 A 提供,然后经过哈希处理、结构化,然后由 X1 和 X2 以相同的方式检查。
【讨论】: