代码之家  ›  专栏  ›  技术社区  ›  TIMBERings

微服务认证体系结构

  •  0
  • TIMBERings  · 技术社区  · 6 年前

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

    Flow Diagram

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

    这是正确的认证方式吗?有更好的办法吗?我应该做些小调整吗?

    另外,我应该区别对待从web客户端到微服务的身份验证和微服务之间的身份验证吗?

    2 回复  |  直到 6 年前
        1
  •  0
  •   Rob Conklin    6 年前

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

    从看开始 OAuth 2.0 and OpenId Connect 提供者,它实际上是分布式身份验证中的标准。无论你使用哪种语言/平台,都可能有一个你可以利用的实现。这将极大地加快您的速度,并且可能会避免您在实现中所做的所有错误的事情。

        2
  •  0
  •   Aydin Homay    6 年前

    这里是现成的,基于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