微服务认证架构

时间:2018-12-30 21:07:35

标签: authentication architecture microservices

我开始编写一些微服务,这些微服务将具有独立的Web客户端,集中式身份验证和授权服务以及组织服务。组织服务将跟踪谁属于哪个组织以及该组织支付了什么费用。这将告诉我谁可以访问哪个Web客户端以及每个单独的微服务的哪些部分。我仅在单个Rails整体中使用Devise开发了身份验证,因此我正在探索如何在多微服务和Web客户端生态系统中进行身份验证。我想出了这个:

Flow Diagram

  1. Web客户端向微服务发出请求,但由于缺少请求中发送的会话信息而被拒绝。
  2. Web客户端向身份验证服务发出登录请求。身份验证向“组织”服务发出请求,以查看用户属于哪个组织以及所支付的服务。会话信息存储在Web客户端中,以备将来在请求中使用。
  3. Web客户端向微服务发出请求。微服务根据身份验证服务验证会话信息(从2开始),身份验证服务又将其提供给组织以获取用户组织和组织服务。身份验证的响应存储在微服务中。如果两组会话信息匹配,则将授予返回Web客户端的响应。
  4. Web客户端向微服务发出请求,包括会话信息(来自2)。微服务根据存储的会话信息(从3开始)验证会话信息。如果两组会话信息匹配,则将授予返回Web客户端的响应。

这是正确的身份验证方法吗?有更好的方法吗?我应该做些小调整吗?

此外,我应该将Web客户端到微服务的身份验证与微服务之间的身份验证区别对待吗?

2 个答案:

答案 0 :(得分:1)

帮自己一个大忙,不要试图自己发明这个。许多人已经编写了功能齐全的auth&auth系统,其中一些人做得很好。除非您是安全专家(如果您问这个问题,否则可能不是),请使用框架。

首先查看OAuth 2.0 and OpenId Connect提供程序,它是分布式身份验证中的实际标准。无论使用哪种语言/平台,都有可能可以立即使用的实现。这将极大地加快您的速度,并有可能避免您在实现过程中做错的所有事情。

答案 1 :(得分:1)

您现在就可以直接使用基于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