首页 > 解决方案 > 后端服务器应用程序能否利用 userinfo 端点检索 OpenID Connect 中的最终用户声明?

问题描述

我有3个应用程序,

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

客户端应用程序可以验证和检索 id_token 和授权令牌,然后 RP 使用授权令牌通过在标头中传递它来调用 OP。然后,此请求将由 OP 转发到中介服务器 (MS)。MS 需要访问最终用户信息。简单地将它们作为查询参数或请求正文传递不是一种选择。但是 RP 发送的授权令牌仍然可以被 MS 访问。MS 使用 OP 的 userinfo 端点来检索用户声明是错误的,因为openID Connect 文档只提到客户端应用程序(RP)使用的 userinfo 端点?

标签: authenticationoauth-2.0authorizationopenid-connect

解决方案


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

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

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

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


推荐阅读