我有3个申请,
客户端应用程序可以对id_token和授权令牌进行身份验证和获取。然后,RP通过在标头中传递授权令牌,从而使RP使用授权令牌来调用OP。然后,该请求将由OP转发给中介服务器(MS)。 MS需要访问最终用户信息。不能简单地将它们作为查询参数或在请求正文中传递。但是RP发送的授权令牌仍可以由MS访问。由于openID Connect docs仅提及要由客户端应用程序(RP)使用的userinfo端点,因此MS使用OP的userinfo端点来检索用户声明是否错误?
答案 0 :(得分:1)
简单的答案是肯定的,这是一个有效的用例。
用户信息端点是由OpenID Connect定义的OAuth 2.0令牌保护的端点。它的行为或多或少类似于OAuth 2.0(OAuth 2.0 Token Introspection)定义的令牌自省端点,为令牌持有者提供了获取经过身份验证的最终用户信息的能力。
从应用程序的角度来看,您有两个部分的客户端。最终用户最先获得的部分实际上是获得访问令牌和ID令牌的。然后,您将拥有一个后端部分(如您所定义的MS),该部分依靠令牌来执行一些验证(例如:针对已知DB的电子邮件验证)。因此,基本上,MS属于您的应用程序,因此 CLIENT 仍在此范围内。
对此的一种替代方法是使用自包含的访问令牌。它们将以JWT的形式出现(类似于ID令牌),通常可以配置为具有必要的用户信息。这样做的好处是您可以避免MS调用用户信息并依靠JWT完整性(注意-当然,您需要OP的公共密钥,但是可以将其缓存一段时间)