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

时间:2021-04-09 11:18:44

标签: authentication microservices

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

API 认证

  • 假设在使用 Stripe 的任何业务 API 之前,API 消费者(在我的例子中是客户和支付服务)必须首先使用 API 密钥(AppId 和机密)对自身进行身份验证。
  • Stripe 提供访问令牌,必须将其传递到 HTTP 标头中,以便后续对 Stripe 的 API 调用。

以下是可能的方法,

方法1 https://drive.google.com/file/d/1BGn-hiNwZT4u3BIBmEv-HkJC0w0dk5CB/view?usp=sharing

方法 2:https://drive.google.com/file/d/1JA1hFq7l7-4Ow3b32XNyb2co4tqxKZQ6/view?usp=sharing

方法 1

  • 多个身份验证令牌虽然 Stripe 帐户是单个(每个服务实例)
  • 管理身份验证令牌到期/续订的每个服务

方法二

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

想知道哪个最适合微服务架构?还有什么建议吗?

1 个答案:

答案 0 :(得分:1)

如果更多服务需要 API 访问外部 API,则方法 2 的可扩展性和可维护性稍高一些。 然而,正确的实现应该是所有外部 API 调用的出口网关。 如果您打算花时间构建 Auth 服务,那么您不妨一路走下去,并集中您的外部 API 路由。 好处:

  • 外部 API 的单一内部端点,减少重复。
  • 使用外部 API 为您的服务处理所有 authn 和 authz。
  • 集中所有日志记录、审计、灾难恢复、负载平衡等......

大多数网关产品(如 kong)也可用于出口。