使用多个承载访问令牌的最佳实践
Best practice for using multiple bearer access tokens
这就是我想要做的。我有一个 RESTFUl 服务,它将使用不记名令牌进行身份验证。同一个服务使用另一个需要它自己的不记名令牌的服务。最初我计划让我的服务(称为服务 A)获取承载令牌并在内部需要时对调用此其他服务(服务 B)进行身份验证。这工作正常,除非我考虑添加 PATCH 端点或其他将修补到服务 B 上的端点的端点。为了做到这一点,我需要将令牌传递回服务 A,以便它可以用于服务上的补丁B. 也许这会更好地解释它:
服务 A POSTS 到端点 /foo
- 在端点 /foo 中调用的代码 POSTS 到服务 B 上的端点 /fee。
为端点提供补丁 /foo/1
- 端点 /foo/1 中调用的代码 PATCH 到服务 B 上的端点 /fee/1。
服务 A 和服务 B 使用不同的 oauth 服务,每个都需要各自的令牌。在对服务 B 的 PATCH 调用中需要服务 B 令牌,并且必须在服务 A 的 /foo/1 PATCH 的 header 中传递,但服务 A 仍然需要它自己的令牌。
我认为服务 A(我的服务)仍将按预期使用授权 header。然后,服务 A 将在其 /foo 响应中发送服务 B 令牌(除授权外使用不同的 header)。然后需要收集该令牌并将其传递回服务 A PATCH /foo/1。即 in-turn 用于调用服务 B 的 /fee/1 PATCH。
这是最好的方法吗?好像太复杂了。
标准解是这样的:
- 服务 A 使用客户端凭证流为服务 B 获取令牌 - 第一次需要它
- 服务 A 然后缓存此令牌以供后续调用服务 B
- 当服务 B 令牌过期时,服务 A 收到 401
- 然后服务 A 再次使用客户端凭证流来更新令牌
- 服务 A 然后使用新令牌重试 API 调用
服务 B 令牌通常是从授权服务器而不是服务 B 本身返回的
这就是我想要做的。我有一个 RESTFUl 服务,它将使用不记名令牌进行身份验证。同一个服务使用另一个需要它自己的不记名令牌的服务。最初我计划让我的服务(称为服务 A)获取承载令牌并在内部需要时对调用此其他服务(服务 B)进行身份验证。这工作正常,除非我考虑添加 PATCH 端点或其他将修补到服务 B 上的端点的端点。为了做到这一点,我需要将令牌传递回服务 A,以便它可以用于服务上的补丁B. 也许这会更好地解释它:
服务 A POSTS 到端点 /foo
- 在端点 /foo 中调用的代码 POSTS 到服务 B 上的端点 /fee。
为端点提供补丁 /foo/1
- 端点 /foo/1 中调用的代码 PATCH 到服务 B 上的端点 /fee/1。
服务 A 和服务 B 使用不同的 oauth 服务,每个都需要各自的令牌。在对服务 B 的 PATCH 调用中需要服务 B 令牌,并且必须在服务 A 的 /foo/1 PATCH 的 header 中传递,但服务 A 仍然需要它自己的令牌。
我认为服务 A(我的服务)仍将按预期使用授权 header。然后,服务 A 将在其 /foo 响应中发送服务 B 令牌(除授权外使用不同的 header)。然后需要收集该令牌并将其传递回服务 A PATCH /foo/1。即 in-turn 用于调用服务 B 的 /fee/1 PATCH。
这是最好的方法吗?好像太复杂了。
标准解是这样的:
- 服务 A 使用客户端凭证流为服务 B 获取令牌 - 第一次需要它
- 服务 A 然后缓存此令牌以供后续调用服务 B
- 当服务 B 令牌过期时,服务 A 收到 401
- 然后服务 A 再次使用客户端凭证流来更新令牌
- 服务 A 然后使用新令牌重试 API 调用
服务 B 令牌通常是从授权服务器而不是服务 B 本身返回的