【发布时间】:2019-05-27 15:09:32
【问题描述】:
我开始编写一些具有独立 Web 客户端、集中式身份验证和授权服务以及组织服务的微服务。组织服务将跟踪谁属于哪个组织以及该组织支付了哪些费用。这将告诉我谁可以访问哪个 Web 客户端以及每个微服务的哪些部分。我只在单个 Rails 单体应用中使用 Devise 开发了身份验证,因此我正在探索如何在多微服务和 Web 客户端生态系统中进行验证。我想出了这个:
- Web 客户端向微服务发出请求,但由于请求中缺少会话信息而被拒绝。
- Web 客户端向身份验证服务发出登录请求。身份验证向组织服务发出请求,以查看用户所属的组织以及支付的服务。会话信息存储在 Web 客户端中以供将来在请求中使用。
- Web 客户端向微服务发出请求。微服务根据身份验证服务验证会话信息(来自 2),身份验证服务反过来为用户的组织和组织的服务到达组织。来自身份验证的响应存储在微服务中。如果两组会话信息匹配,则返回给 Web 客户端的响应。
- Web 客户端向微服务发出请求,包括会话信息(来自 2)。微服务根据存储的会话信息(从 3 开始)验证会话信息。如果两组会话信息匹配,则返回给 Web 客户端的响应。
这是正确的身份验证方式吗?有更好的方法吗?我应该做些小调整吗?
此外,我是否应该区别对待从 Web 客户端到微服务的身份验证与微服务之间的身份验证?
【问题讨论】:
标签: authentication architecture microservices