Security OpenID Connect如何处理服务链? 背景

Security OpenID Connect如何处理服务链? 背景,security,jwt,openid-connect,Security,Jwt,Openid Connect,假设我有一个创建发货的应用程序。用户坐在该应用程序前面并加载页面。然后将它们重定向到IDP以进行登录。我使用的流是授权代码流。这涉及到客户端ID和客户端机密。IDP可以将这些值与用户的凭据一起进行登录 登录后,应用程序将获得一个id\u令牌,该令牌让应用程序知道用户是谁(身份验证) 然后应用程序需要调用一个服务(我们可以称之为服务1)。应用程序可以将id\u令牌作为JWT承载令牌传递给服务1 服务1获取JWT,并可以使用其上的签名(使用IDP的公钥)来验证JWT实际上来自其信任的IDP 问题 这

假设我有一个创建发货的应用程序。用户坐在该应用程序前面并加载页面。然后将它们重定向到IDP以进行登录。我使用的流是授权代码流。这涉及到客户端ID和客户端机密。IDP可以将这些值与用户的凭据一起进行登录

登录后,应用程序将获得一个
id\u令牌
,该令牌让应用程序知道用户是谁(身份验证)

然后应用程序需要调用一个服务(我们可以称之为服务1)。应用程序可以将
id\u令牌
作为JWT承载令牌传递给服务1

服务1获取JWT,并可以使用其上的签名(使用IDP的公钥)来验证JWT实际上来自其信任的IDP

问题 这一切都很棒,效果也不错。但是现在服务1需要调用服务2来满足装运应用程序的请求

这就是我感到困惑的地方。服务1有自己的客户端ID和客户端机密。它还可以获得“客户端凭据”令牌。但是服务2需要知道发出请求的用户,并且客户端凭据令牌中没有任何用户信息

Authorization:Bearer
头只允许一个令牌。但我需要两个人的空间:

  • 如果我只通过用户的JWT,我的JWT看起来像是直接从发货应用程序调用服务2。(可能不应该直接从装运应用程序调用服务2。)
  • 但是,如果我只传递服务1的客户机凭据令牌,那么服务2将无法获取用户的信息
不管怎样,服务2都不会满意

问题: OpenID Connect是否有合并两个令牌的方法?或者以其他方式允许服务呼叫链工作?


注:我目前正在通过这两项考试。一个在
授权:承载
头中,一个在自定义头中。但由于这不是OpenID连接协议的一部分,因此在使用第三方工具(如OpenAPI(又名Swagger))时会产生问题。

您可以查看委托令牌模式,为Service1到Service通信颁发新令牌

见: