当前位置: 首页 > 知识库问答 >
问题:

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

章青青
2023-03-14

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

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

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

我们将有一个API网关。

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

我对这个解决方案有一些误解,所以我希望得到一些帮助:

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

共有1个答案

商品
2023-03-14

API网关的职责是什么?

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

  • 安全
  • 伐木
  • 路由
  • 版本控制
  • 正在转变

您有一个带有标题的传入请求,需要将其传递给实际处理该请求的下游服务。API网关几乎可以完成上述两项之间的所有工作。

身份微服务的职责是什么?

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

身份可以有角色,服务在相互通信时需要传递信息,这些信息告诉下游服务身份以及该服务可以验证传递的身份信息的一些方法

这就是OAuth发挥作用的地方,如果添加身份、身份提供者和授权,就会得到一个名为OIDC或OpenID Connect的东西

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

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

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

 类似资料:
  • null null myApp应用程序不能直接访问用户数据库,所有通信都只能通过用户认证微服务处理。 在过去的一周里,我广泛阅读了关于REST API中的授权/身份验证的内容,但仍然不知道如何为User->myApp和MyApp->User-Authentication微服务构建一个可靠的授权/身份验证系统。 这是我现在想出来的。 null Now, user signs in sending u

  • 我正在开发应用程序使用微服务架构。需要实施安全保障。 所以我计划使用3个服务来实现这一点。 API网关 用户服务 订单服务 步骤1:客户端向API网关发送用户名和密码以获取令牌。API Gateway应该调用Users Service来验证CRED,如果CRED是有效的,API Gateway创建一个令牌并将其发送给客户端。 步骤2:客户端尝试使用令牌访问订单服务(API网关在步骤1中发送了令牌)

  • 简而言之,应该在哪里执行输入验证和身份验证验证?在 API 网关和每个微服务中?仅在 API 网关中?仅在每个微服务中? 也许部分在api网关中,部分在每个网关中? 谢谢你的回答!

  • 我正在开发具有微服务架构的后端。我对该架构不熟悉,目前我在一个容器中开发了3个微服务(RESTful Web服务,带有Spring Boot)。我想实现OAuth2和JWT Rest Prot和网关。使用授权服务器和资源服务器实现网关是正确的吗?我在架构上做错了什么吗? 谢谢你的回复

  • 我正在尝试构建一个微服务架构。我已经了解了API网关的一些好处,比如:负载平衡、调用多个微服务并聚合结果、缓存管理等。所以我决定将它包含在我的系统中。 我的问题是,我应该在网关层还是在每个微服务endpoint单独实现授权?例如,在网关上验证用户,并以解密的形式将用户声明传递给每个服务调用的授权逻辑。 在调用每个服务之前授权一些聚合似乎是有意义的,并且节省了处理时间。然而,授权逻辑实际上是单个服务

  • 让我们说,我正在开发博客平台,用户可以注册帐户,支付订阅和创建自己的博客。平台由以下微服务组成: 帐户-服务 auth-service 订阅-服务 博客-服务 API-网关 我正在考虑实现api-gw模式,其中除了api-gw之外的所有微服务都将部署到专用网络中(在那里,它们将能够通过message broker直接以同步或异步方式相互通信),并且它们将只通过api-gw公开可用。 null 我的