后端服务器应用程序能否利用 userinfo 端点检索 OpenID Connect 中的 end-user 声明?

Can back end server applications utilize the userinfo endpoint to retrive end-user claims in OpenID Connect?

我有 3 个应用程序,

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

客户端应用程序可以验证和检索 id_token 和授权令牌,然后 RP 使用授权令牌通过在 header 中传递来调用 OP。然后,此请求将由 OP 转发到中介服务器 (MS)。 MS 需要访问 end-user 信息。简单地将它们作为查询参数或在请求中传递 body 不是 option.But RP 发送的授权令牌仍然可以被 MS 访问。 MS 使用 OP 的 userinfo 端点来检索用户声明是否错误,因为 openID Connect docs 只提到客户端应用程序 (RP) 使用的 userinfo 端点?

简单的回答是肯定的,这是一个有效的用例。

用户信息端点是由 OpenID Connect 定义的 OAuth 2.0 令牌保护端点。它的行为或多或少类似于 OAuth 2.0 (OAuth 2.0 Token Introspection) 定义的令牌内省端点,为令牌持有者提供获取经过身份验证的最终用户信息的能力。

从您的应用程序角度来看,您有客户端的两个部分。一个最终用户前面的部分,它实际获取访问令牌和 ID 令牌。然后你有一个后端部分(你定义的 MS)依赖令牌来执行一些验证(例如:- 针对已知数据库的电子邮件验证)。所以基本上 MS 是您应用程序的一部分,这仍然在术语 CLIENT.

的范围内

另一种方法是使用独立的访问令牌。它们将以 JWT(类似于 ID Token)的形式出现,通常可以配置为具有必要的用户信息。这样做的好处是您可以避免 MS 到 OP 调用用户信息并依赖 JWT 完整性(注意 - 当然您需要来自 OP 的 public 密钥,但这可以缓存一段时间)