Architecture 如何在微服务和API网关体系结构中验证和授权不同的配置文件

Architecture 如何在微服务和API网关体系结构中验证和授权不同的配置文件,architecture,oauth-2.0,asp.net-identity,microservices,api-gateway,Architecture,Oauth 2.0,Asp.net Identity,Microservices,Api Gateway,我想建立一个微服务架构。它应该有13个微服务和3个客户端(2个网络客户端和1个移动客户端) 在我们的场景中,我们有: 员工:对特定和共享服务的访问权限及其凭据存储在Active Directory中 管理员:他们是具有完全访问权限的员工。他们有特定的和共享的服务,他们的凭证存储在Active Directory中 客户:对特定和共享服务的访问及其凭据存储在Identity microservice中 我们将有一个API网关 每个请求都由API网关处理,该网关应(或调用负责人)检查请求的令牌是

我想建立一个微服务架构。它应该有13个微服务和3个客户端(2个网络客户端和1个移动客户端)

在我们的场景中,我们有:

  • 员工:对特定和共享服务的访问权限及其凭据存储在Active Directory中
  • 管理员:他们是具有完全访问权限的员工。他们有特定的和共享的服务,他们的凭证存储在Active Directory中
  • 客户:对特定和共享服务的访问及其凭据存储在Identity microservice中
我们将有一个API网关

每个请求都由API网关处理,该网关应(或调用负责人)检查请求的令牌是否有效,确定其是否为客户、员工或管理员,并检查该用户是否具有访问请求API/microservice的权限

我对这个解决方案有一些误解,因此我非常感谢您的帮助:

  • API网关的职责是什么
  • 身份微服务的职责是什么
  • 如何管理定义员工、客户和管理员可以访问或不可以访问哪些API/微服务
  • 如何确定给定用户是客户、员工还是管理员
API网关的职责是什么

API网关可以理解为一个位于所有其他服务前面的服务,并允许您向客户机公开这些服务。 通过这样做,它允许所有的流量通过它自己,因此,它可以做很多事情,比如

  • 保安
  • 伐木
  • 路由
  • 版本控制
  • 转化
您有一个带有头的传入请求,需要将其传递给实际将处理该请求的下游服务。API网关可以在这两者之间做很多事情,就像上面提到的那样

身份微服务的职责是什么

标识是帮助您唯一标识用户的数据集。在您的情况下,您有Active Directory,其中包含所有员工的身份信息。同样,您可以保留有关客户的信息,这是一项此类服务。Identity应全权负责帮助您识别用户的基本人口统计信息。除此之外,此类服务可能还需要为使用身份提供安全性

标识可以具有角色,并且在相互通信时,服务需要传递告知下游服务有关标识的信息,以及该服务可以验证传递的标识信息的一些方法

这就是OAuth发挥作用的地方,如果您添加标识、标识提供程序和授权,您将得到一个名为OIDC或OpenID Connect的东西

这样,您应该能够为每个标识定义角色,然后让单个服务决定具有特定角色的特定标识可以做什么或不能做什么

如何确定给定用户是客户、员工还是管理员

好的,您可以使用角色来标识(如果您可以将角色添加到您的标识中),或者让您的标识服务为您解答这个问题。 传递userId,让服务告诉您它基于什么类型的用户,该用户数据的来源。
除非我有更多的洞察力,否则回答这个问题并不难。

太好了。API Gatway负责什么样的安全?因此,您可以根据身份、客户和员工的具体数据为他们提供不同的服务。对吗?响应是否必须包含角色、范围和声明?为什么?API网关可以剥离安全请求。这有点复杂,因为您需要放弃身份验证,但保留授权。但它可以说用户就是他声称的那个人,下游的任何人都不需要检查它。可以缩短几毫秒。2.呼叫是您的,但由于所有这些都只是一个标识,我将有一个服务和多个租户,并将外部Active directory打包在这后面。3.回应不必如此。请求应包含带有标识、角色和声明的标题信息。