Rest 使用多个承载访问令牌的最佳实践

Rest 使用多个承载访问令牌的最佳实践,rest,authentication,oauth,access-token,Rest,Authentication,Oauth,Access Token,这就是我要做的。我有一个RESTFUl服务,它将通过不记名令牌进行身份验证。这个服务使用另一个需要自己的承载令牌的服务。最初,我计划让我的服务(称之为服务A)获得承载令牌,并在需要内部验证时调用另一个服务(服务B)。这很好,除非我考虑添加修补程序终结点或将修补到服务B上终结点的其他终结点。为此,我需要将令牌传递回服务A,以便它可以用于服务B上的修补程序。也许这可以更好地解释它: 服务A发布到端点/foo endpoint/foo中调用的代码发布到服务B上的endpoint/fee 服务A

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

  • 服务A发布到端点/foo

    • endpoint/foo中调用的代码发布到服务B上的endpoint/fee
  • 服务A修补程序到端点/foo/1

    • 在服务B上的endpoint/foo/1修补程序中调用endpoint/fee/1的代码
服务A和服务B都使用不同的oauth服务,并且每个服务都需要各自的令牌。在对服务B的修补程序调用中需要服务B令牌,并且必须在服务A的/foo/1修补程序的头中传递,但服务A仍然需要它自己的令牌

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


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

标准溶液如下:

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

服务B令牌通常从授权服务器返回,而不是从服务B本身返回。标准解决方案如下:

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

服务B令牌通常是从授权服务器返回的,而不是从服务B本身返回的,这很有道理。这很有道理。