后端服务器应用程序可以利用userinfo端点检索OpenID Connect中的最终用户声明吗?

时间:2019-10-02 08:24:49

标签: authentication oauth-2.0 authorization openid-connect

我有3个申请,

  1. 客户端应用程序(RP)
  2. OpenID Provider(OP)
  3. 中介服务器(MS)

客户端应用程序可以对id_token和授权令牌进行身份验证和获取。然后,RP通过在标头中传递授权令牌,从而使RP使用授权令牌来调用OP。然后,该请求将由OP转发给中介服务器(MS)。 MS需要访问最终用户信息。不能简单地将它们作为查询参数或在请求正文中传递。但是RP发送的授权令牌仍可以由MS访问。由于openID Connect docs仅提及要由客户端应用程序(RP)使用的userinfo端点,因此MS使用OP的userinfo端点来检索用户声明是否错误?

1 个答案:

答案 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的公共密钥,但是可以将其缓存一段时间)

相关问题