如何在微服务和API网关架构中对不同的配置文件进行身份验证和授权

问题描述 投票:2回答:1

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

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

  • 员工:访问特定和共享服务及其凭据存储在Active Directory中;
  • 管理员:他们是具有完全访问权限的员工。它们具有特定和共享服务,其凭据存储在Active Directory中;
  • 客户:访问特定和共享服务及其凭据存储在Identity微服务中。

我们将有一个API网关。

每个请求都由API网关处理,应该(或调用负责人)检查请求的令牌是否有效,确定它是客户,员工还是管理员,并检查该用户是否有权访问请求API /微服务。

我对这个解决方案有一些误解,所以我很感激一些帮助:

  • 什么是API网关职责?
  • 什么是Identity微服务职责?
  • 如何管理员工,客户和管理员可以访问哪些API /微服务?
  • 如何识别给定用户是客户,员工还是管理员?
architecture oauth-2.0 asp.net-identity microservices api-gateway
1个回答
2
投票

什么是API网关职责?

API网关可以理解为位于所有其他服务之前的一种服务,并允许您将这些服务公开给客户端。这样做它允许所有流量通过自身,因此可以做很多事情

  • 安全
  • 记录
  • 路由
  • 版本
  • 改造

您有一个带头的传入请求,您需要将其传递给实际将处理请求的下游服务。 API网关可以像上面提到的那样处理几乎所有事情。

什么是Identity微服务职责?

标识是一组数据,可帮助您唯一地标识用户。在您的情况下,您拥有Active Directory,其中包含您所有员工的身份信息。同样,您可以保留有关客户的信息就是这样的服务。身份应该独自负责帮助您识别他的用户的基本人口统计信息。除此之外,这样的服务可能需要提供围绕使用身份的安全性。

身份可以具有角色,并且当彼此通信时,服务需要传递告知下游服务有关身份的信息以及该服务可以通过哪些方式来验证传递的身份信息。

这就是OAuth发挥作用的地方,如果您添加身份,身份提供者和授权,您将获得称为OIDC或OpenID Connect的内容

有了这个,您应该能够为每个身份定义角色,然后让各个服务决定特定角色的特定身份可以做什么或不能做什么。

如何识别给定用户是客户,员工还是管理员?

好吧,您可以使用该角色来识别(如果您可以为您的身份添加角色),或者让您的身份服务为您解答此问题。传递userId并让服务根据源用户数据的来源告诉您它是什么类型的用户。除非我有更多的见解,否则很难回答这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.