【问题标题】:Microservices - managing external system auth-token微服务 - 管理外部系统 auth-token
【发布时间】:2021-07-05 06:38:27
【问题描述】:

假设我有 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 帐户是单一的(每个服务实例)
  • 管理身份验证令牌到期/续订的每个服务

方法2

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

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

【问题讨论】:

    标签: authentication microservices


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-18
      • 2017-12-05
      • 2021-12-11
      • 1970-01-01
      • 2020-02-20
      • 2020-04-26
      相关资源
      最近更新 更多