【问题标题】:Best practice for using multiple bearer access tokens使用多个不记名访问令牌的最佳实践
【发布时间】:2020-08-01 18:13:26
【问题描述】:

这就是我想要做的。我有一个 RESTFUl 服务,它将使用不记名令牌进行身份验证。同样的服务使用另一个需要它自己的不记名令牌的服务。最初,我计划让我的服务(称为服务 A)获取承载令牌并在内部需要时调用此其他服务(服务 B)。这很好用,除非我考虑添加 PATCH 端点或其他将修补到服务 B 上的端点的端点。为此,我需要将令牌传递回服务 A,以便它可以用于服务上的补丁B. 也许这会更好地解释它:

  • 服务 A POST 到端点 /foo

    • 端点 /foo 中调用的代码发布到服务 B 上的端点 /fee。
  • 服务 A PATCHS 到端点 /foo/1

    • 在端点 /foo/1 PATCH 中调用的代码到服务 B 上的端点 /fee/1。

服务 A 和服务 B 都使用不同的 oauth 服务,并且每个服务都需要各自的令牌。在对服务 B 的 PATCH 调用中需要服务 B 令牌,并且必须在服务 A 的 /foo/1 PATCH 的标头中传递,但服务 A 仍然需要它自己的令牌。

我认为服务 A(我的服务)仍会按预期使用 Authorization 标头。然后,服务 A 将在其 /foo 响应中发送服务 B 令牌(使用授权之外的不同标头)。然后需要收集该令牌并将其传递回服务 A PATCH /foo/1。这反过来又用于调用服务 B 的 /fee/1 PATCH。

这是最好的方法吗?看起来太复杂了。

【问题讨论】:

    标签: rest authentication oauth access-token


    【解决方案1】:

    标准溶液是这样的:

    • 服务 A 使用客户端凭据流来获取服务 B 的令牌 - 第一次需要它
    • 服务 A 然后缓存此令牌以供后续调用服务 B
    • 当服务 B 令牌过期时,服务 A 收到 401
    • 然后服务 A 再次使用客户端凭据流来更新令牌
    • 服务 A 然后使用新令牌重试 API 调用

    服务 B 令牌通常从授权服务器返回,而不是从服务 B 本身返回

    【讨论】:

    • 这很有意义。
    猜你喜欢
    • 2012-08-02
    • 2019-09-09
    • 2011-08-13
    • 1970-01-01
    • 2020-11-09
    • 2012-12-04
    • 2014-03-14
    • 1970-01-01
    • 2015-06-08
    相关资源
    最近更新 更多