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

微服务体系结构中的认证与授权设计

禄星腾
2023-03-14

我正在开发应用程序使用微服务架构。需要实施安全保障。

所以我计划使用3个服务来实现这一点。

  1. API网关
  2. 用户服务
  3. 订单服务

步骤1:客户端向API网关发送用户名和密码以获取令牌。API Gateway应该调用Users Service来验证CRED,如果CRED是有效的,API Gateway创建一个令牌并将其发送给客户端。

步骤2:客户端尝试使用令牌访问订单服务(API网关在步骤1中发送了令牌),因此API网关必须调用用户服务来验证令牌。

我想在我的API网关微服务中有所有的授权和认证逻辑。因此,当我从API网关的消费者那里获得JWT令牌时,我应该调用Users Service来根据用户名和密码验证它,因为我在Users Service中存储了所有与用户相关的数据。

我相信这将是实现微服务架构安全性的更好方法之一。

共有1个答案

桑鸿志
2023-03-14

我认为你走在正确的道路上。但是每一个操作都依赖于用户服务,这使得用户服务可能是单点故障,其他服务的可用性也依赖于该用户服务。

请阅读更多关于服务熔断反模式的信息:https://akfpartners.com/growth-blog/microservice-anti-pattern-service-fuse

对于第一个身份验证调用,将带有用户名和密码的身份验证委托给用户服务是有意义的。但是对于其他调用,您可以只在API网关上验证JWT。

我建议使用公钥密码术对JWTs进行签名,这样您就可以在用户服务上使用私钥对JWTs进行签名,并将公钥部署到API网关进行验证。这样,API网关或任何其他服务将能够验证令牌,而不需要敏感的共享秘密。

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

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

  • 我最近开始使用Node.js,我必须构建一个应该使用多个Express.js服务的体系结构。其中一些服务必须位于一台服务器上,另一台则位于其他服务器上。我想构建一个基础服务(像API网关),但是我不知道在这个网关和微服务之间,或者在两个微服务之间进行通信的合适方式是什么。 目前我正在研究一个基于此的解决方案:

  • 总而言之,我们有: 产品类别: 产品ID、产品名称 订单类别: 订单ID、产品ID、用户ID、订单日期 这些方法中的任何一种可以被认为是最佳实践吗?还是有不同的解决方案?

  • 我有一个微服务体系结构,它的日志必须发送到远程Kafka主题。在它旁边,本主题的使用者将把日志发送到麋鹿堆栈(另一个团队) 我想要一个专用的微服务(fwk proxy elasticsearch),其职责是收集其他人的日志,并将其发送到远程Kafka主题。 将从我的微服务聚合的所有日志分派到fwk-代理-弹性搜索微服务的最佳协议是什么? 我希望这个模式不会重复远程Kafka主题的安全配置。我想把它

  • 我经常听说,在微服务架构中,对于每一个微服务,我们都必须创建单独的数据库。 但是,如果我必须在不同的数据库中维护外键约束,这是不可能的。就像我在身份验证微服务中有一个用户表,我想在我的目录服务中使用它(用户表中的用户 ID 列) 那么如何解决呢。 感谢提前