Authentication 微服务-管理外部系统身份验证令牌

Authentication 微服务-管理外部系统身份验证令牌,authentication,microservices,Authentication,Microservices,假设我有2个微服务(客户和支付),它们都使用外部系统的API(例如Stripe) API认证 假设在使用Stripe的任何业务API之前,API使用者(在我的例子中是客户和支付服务)必须首先使用API密钥(AppId和secret)进行身份验证 Stripe提供访问令牌,必须将其传递到HTTP头中,并进入到Stripe的后续API调用中 以下是可能的方法 方法1 方法2: 方法1 通过条带帐户的多个身份验证令牌是单个的(每个服务实例) 用于管理身份验证令牌到期/续订的每个服务 方法2

假设我有2个微服务(客户和支付),它们都使用外部系统的API(例如Stripe)

API认证

  • 假设在使用Stripe的任何业务API之前,API使用者(在我的例子中是客户和支付服务)必须首先使用API密钥(AppId和secret)进行身份验证
  • Stripe提供访问令牌,必须将其传递到HTTP头中,并进入到Stripe的后续API调用中
以下是可能的方法

方法1

方法2:

方法1

  • 通过条带帐户的多个身份验证令牌是单个的(每个服务实例)
  • 用于管理身份验证令牌到期/续订的每个服务
方法2

  • 所有服务都存在单个身份验证令牌
  • 对身份验证服务的依赖
  • 由单个服务管理的身份验证令牌到期/续订(身份验证服务)

想知道哪一个应该最适合微服务架构?还有其他建议吗?

如果更多的服务需要API访问外部API,那么方法2的可扩展性和可维护性会稍微好一些。 但是,正确的实现是为所有外部API调用提供一个出口网关。 如果您打算花时间构建一个身份验证服务,那么您也可以全力以赴,集中您的外部API路由。 好处:

  • 单个内部端点用于外部API,减少了重复
  • 使用外部API为您的服务处理所有authn和authz
  • 集中所有日志记录、审核、灾难恢复、负载平衡等
大多数网关产品(如kong)也可用于出口