Oauth 2.0 OAuth2和OpenIDAPI到API的通信

Oauth 2.0 OAuth2和OpenIDAPI到API的通信,oauth-2.0,openid-connect,Oauth 2.0,Openid Connect,我们有几个相互通信的微服务,所有这些微服务都使用Oauth2授权来允许访问其API。该流从UI开始,在UI中我们使用标准的“授权\代码”流,最后获得一个访问\令牌来调用特定的API-1服务(注册为客户端\ id“123”)。然后UI向API-1(客户端id 123)发送一个请求,我们的API-1现在验证通过auth server传递的访问令牌。一旦有效,该API现在希望与另一个需要访问令牌的API(API-2)(我们的内部微服务)通信。我们不能重复使用用于特定客户端的相同访问令牌。API-1可以

我们有几个相互通信的微服务,所有这些微服务都使用Oauth2授权来允许访问其API。该流从UI开始,在UI中我们使用标准的“授权\代码”流,最后获得一个访问\令牌来调用特定的API-1服务(注册为客户端\ id“123”)。然后UI向API-1(客户端id 123)发送一个请求,我们的API-1现在验证通过auth server传递的访问令牌。一旦有效,该API现在希望与另一个需要访问令牌的API(API-2)(我们的内部微服务)通信。我们不能重复使用用于特定客户端的相同访问令牌。API-1可以使用令牌交换与API-2对话,但API-1的开发人员不希望进行任何令牌交换。在这种情况下,我们有哪些选择


感谢

典型的解决方案是让API1使用其访问令牌与您的令牌服务联系,并使用令牌交换标准进行交换,以获得访问API2的新访问令牌


有关详细信息,请参阅并咨询您的令牌提供商。

谢谢,但正如我提到的,API-1微服务的开发人员不希望进行任何类型的令牌交换。我考虑使用一个端点,比如/introspect端点,它将从任何服务获取有效的访问令牌,并返回一个JWT,其中包含可以传递给其他api的用户信息。JWT将被签署,以便对任何客户通用。因此,更类似于服务对服务的通信,如果需要,将使用JWT而不是access_令牌。您可以使用API1和API2之间的客户端凭据流。并将用户详细信息作为API操作参数的一部分传递。这将要求API-1知道API-2的客户端id和客户端机密,以及它想要通信的所有其他API的正确性?这将是不可接受的否,API1有自己的单独凭据,可以请求一个范围指向API2的令牌。使用客户端凭据流。发送者不需要知道接收者的秘密。