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

不同微服务中的授权签核

纪实
2023-03-14

我决定第一次尝试实现微服务架构,而不是单一架构,并遇到了授权问题。在一个整体架构中,当访问挂有[Authorize]属性的控制器时,我只是在头中传递令牌,并对照当前的单个数据库检查它。但是在微服务架构中,每个微服务都有自己的数据库,你如何在访问其他微服务时检查令牌,我听说过API Gateway中的check的实现,但我认为,无论如何,每个微服务都应该有自己的check,因为,如果用户没有被授权,就不应该有对API的访问。是否应该使用api gateway向授权微服务发出请求进行验证?我该如何实现这一点?

我有一个单独的用户授权(注册,登录,令牌的发行)微服务,它有一个用户与令牌的数据库。也就是我需要使用API Gateway向这个微服务发出请求?

共有1个答案

劳亦
2023-03-14

一种方法-您应该尝试在API网关级别进行身份验证/授权。每当任何API调用到达需要一些权限的API网关时,请检查令牌。如果访问/令牌不存在,则返回401。在前端,如果您获得401,则在UI上进行身份验证。

第二种方式-UI将令牌传递给API网关,API网关将进一步将令牌发送到其他微服务。

这取决于您需要多少粒度级别的权限。如果它处于非常高的颗粒水平,那么与第二个一起前进,否则与第一个一起前进。

 类似资料:
  • 我有一个多租户项目,它将调用多个微服务来执行特定任务。 我希望微服务从发送的请求中了解要使用哪个DB,因为每个租户都将使用微服务,但是,租户将拥有自己的DB。我有另一个解决方案,它有一个处理API密钥管理的Web项目。 比方说,API密钥管理位于域:portal.example.com 当 tenant.example.com 在 microservice.example.com 调用微服务时,我

  • 我有两个Spring启动应用程序。后端部分-可以访问数据库,它用作Rest API和管理面板。前端部分-使用Rest API为客户端显示信息。 因此,我对客户端(前端)的配置安全性有问题,对管理面板也有问题,授权是通过会话实现的。以前,客户端部分的授权是通过JWT令牌实现的,但我不太明白如何为每个客户端存储令牌,并在向Rest API发送请求时使用它。 这是我的安全配置: 那么,可以使用JWT令牌

  • 我最近读了不少关于微服务的文章,尤其是关于AuthN和Authz的文章。在很大程度上,这一切都很有意义,我可以看到这一切应该如何工作。 (注意--现在我只实现了客户端凭据授予和资源所有者密码凭据授予,因为我只是想看看它是如何工作的,而且用curl调用它们更容易。但我不知道这有什么不同)

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

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

  • 我正试图从现有的应用程序中设计一个具有相当标准的用户管理的微服务:具有认证和授权,并存储用户数据。 我正在开发一个授权服务器来管理用户身份验证和授权,使用作为授权。在另一方面,我必须存储用户的信息/配置文件。 问题:授权服务器应该管理: 授权和用户API?因此,其他微服务可以联系上的授权服务器以获取当前用户,也可以联系以获取完整的用户列表。 还是只有授权,我必须创建用户微服务?因此授权服务器只公开