微服务架构中的认证授权设计

Authentication and Authorization Design in Microservice Architecture

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

所以我计划使用 3 项服务来实现。

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

第一步: 客户端将用户名和密码发送到 API 网关 以获取令牌。 API 网关 应该调用用户服务来验证信用,如果信用有效 API 网关 创建一个令牌并发送给客户。

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

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

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

有没有更优雅的方法请指教

提前致谢。

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

请阅读有关 Service Fuse 反模式的更多信息:https://akfpartners.com/growth-blog/microservice-anti-pattern-service-fuse

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

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