微服务下的身份认证和令牌管理

本文探讨了在微服务架构下,系统自身鉴权、API网关鉴权和Authentication Sidecar模式的身份认证和令牌管理。通过比较各种方案,强调了Authentication Sidecar在解耦、降低复杂性、提高可复用性和可维护性方面的优势,适用于日益复杂的多云或混合云环境。
摘要由CSDN通过智能技术生成

分布式和微服务架构已经越来越多的应用在企业中,服务间的身份认证和令牌管理是其必不可少的部分。

我们的团队在构建一站式门户站点时,需要集成多个后端微服务,每一个服务需要访问不同的系统来完成对应的业务场景 (比如:订单系统,偏好推荐系统,产品系统等)。我们需要将这些系统有机的进行整合,通过在项目中的不断实践,配置恰当的身份认证和令牌管理,我们总结了一些微服务间的身份认证、令牌管理的架构演进与最佳实践。

背景

我们的系统是使用微服务架构开发并打包到容器中,这些系统部署在 Kubernetes(它是用于自动化部署,扩展和管理容器化应用程序的开源系统。它将组成应用程序的容器分组为逻辑单元,以便于管理和发现)。在这些站点中,前端系统需要携带令牌访问不同服务,每一个服务需要携带令牌访问不同的下游服务来完成相应的业务场景,所以这个过程涉及到各个服务之间的身份认证和令牌管理。

系统架构涉及到多个微服务,这些微服务系统由不同的团队维护,我们引进了不同的方案来解除各个系统在鉴权上的耦合,降低系统的复杂性,提高鉴权的可复用性和可维护性。

本文我们将结合项目中引进的系统自身鉴权,API网关鉴权和authentication sidecar模式,介绍整个上下游服务之间的身份认证、令牌管理的架构演进与最佳实践。

系统自身鉴权

系统自身鉴权,就是每个应用系统自己进行身份认证和令牌管理,下面我们就从Inbound Authentication和Outbound Authentication来分析。

Inbound Authentication


上图是入站身份验证流程,服务消费者调用Service时,Service作为服务提供者需要对消费者的令牌进行验证。具体流程如下:

  1. 服务消费者从OAuth服务器获取令牌
  2. 服务消费者携带令牌调用Service
  3. API 请求流入Service中
  4. Service从OAuth服务器获取公钥,验证令牌是否有效。公钥用于验证令牌数字签名。如果令牌有效,则在Service中进行业务处理
Outbound Authentication

这是本地的出站请求流程,Service作为服务消费者携带令牌访问其他后端服务。具体流程如下:

  1. Service通过client id和client secret调用OAuth服务器获得令牌
  2. Service携带令牌请求后端微服务
问题和挑战

从耦合性,复杂性,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值