微服务认证架构
Posted
技术标签:
【中文标题】微服务认证架构【英文标题】:Microservice Authentication Architecture 【发布时间】:2019-05-27 15:09:32 【问题描述】:我开始编写一些具有独立 Web 客户端、集中式身份验证和授权服务以及组织服务的微服务。组织服务将跟踪谁属于哪个组织以及该组织支付了哪些费用。这将告诉我谁可以访问哪个 Web 客户端以及每个微服务的哪些部分。我只在单个 Rails 单体应用中使用 Devise 开发了身份验证,因此我正在探索如何在多微服务和 Web 客户端生态系统中进行验证。我想出了这个:
-
Web 客户端向微服务发出请求,但由于请求中缺少会话信息而被拒绝。
Web 客户端向身份验证服务发出登录请求。身份验证向组织服务发出请求,以查看用户所属的组织以及支付的服务。会话信息存储在 Web 客户端中以供将来在请求中使用。
Web 客户端向微服务发出请求。微服务根据身份验证服务验证会话信息(来自 2),身份验证服务反过来为用户的组织和组织的服务到达组织。来自身份验证的响应存储在微服务中。如果两组会话信息匹配,则返回给 Web 客户端的响应。
Web 客户端向微服务发出请求,包括会话信息(来自 2)。微服务根据存储的会话信息(从 3 开始)验证会话信息。如果两组会话信息匹配,则返回给 Web 客户端的响应。
这是正确的身份验证方式吗?有更好的方法吗?我应该做些小调整吗?
此外,我是否应该区别对待从 Web 客户端到微服务的身份验证与微服务之间的身份验证?
【问题讨论】:
【参考方案1】:帮自己一个大忙,不要试图自己发明。很多很多人已经编写了一个功能齐全的身份验证和身份验证系统,其中一些人做得对。除非您是安全专家(如果您问这个问题,您可能不是),请使用框架。
首先查看OAuth 2.0 and OpenId Connect 提供程序,它是分布式身份验证的事实标准。无论您使用哪种语言/平台,都可能有一个可以开箱即用的实现。这将大大加快您的速度,并可能避免您在实施过程中做错的所有事情。
【讨论】:
也许我还没有做足够的阅读,但我读过的所有内容都提到了资助。如果我的授权和身份验证仅针对我的第一方系统而不针对第三方,我可以忽略授权吗?【参考方案2】:您现在已经准备好开箱即用的基于 Open ID 和 Auth2.0 的 Identity Server,这就是您所需要的。
welcome-to-identityserver4
如果您对微服务架构这一主题感兴趣,以下链接是在代码项目中发表的关于微服务的一组文章,如果您愿意,可以阅读并评论您的问题。
https://www.codeproject.com/Articles/1264113/Dive-into-Microservices-Architecture-Part-I
https://www.codeproject.com/Articles/1264113/Dive-into-Microservices-Architecture-Part-II
https://www.codeproject.com/Articles/1264113/Dive-into-Microservices-Architecture-Part-III
【讨论】:
以上是关于微服务认证架构的主要内容,如果未能解决你的问题,请参考以下文章