Logo Logo
GitHub Designed by Logto

什么是用户信息端点 (Userinfo endpoint)?

OpenID Connect (OIDC) 中,用户信息端点 (userinfo endpoint) 是 OpenID 提供者 (OpenID Provider, OP) 的一个端点,提供用户信息给 客户端 。用户信息端点通常是 ID 令牌 (ID token) 的补充端点,允许客户端检索 ID 令牌 (ID token) 中未包含的额外用户信息。

用户信息端点在 OpenID Connect Core 规范 中定义,通常在客户端获取到 ID 令牌 (ID token) 后被访问。

用户信息端点 (Userinfo endpoint) 如何工作?

当客户端向用户信息端点发出请求时,它需要包含从 Token 请求 (Token request) 获得的访问令牌 (access token),并使用 GETPOST HTTP 方法。用户信息端点验证访问令牌 (access token),并在响应中返回用户信息。

以下是一个非规范的用户信息请求示例:

GET /userinfo HTTP/1.1
Host: openid-provider.example.com
Authorization: Bearer some-access-token

不同 OpenID 提供者的用户信息端点路径可能会有所不同。你可以参考提供者的 OpenID Connect (OIDC) 发现 (Discovery) 找到用户信息端点 URL。如果访问令牌 (access token) 有效,用户信息端点将响应用户信息:

HTTP/1.1 200 OK
Content-Type: application/json

{
  "sub": "user123",
  "name": "Alice",
  "email": "[email protected]",
  "birthdate": "1990-01-01",
  "address": {
    "street": "1234 Elm St",
    "city": "Springfield",
    "country": "US"
  }
}

响应中可能包含各种用户属性,如 nameemailbirthdateaddress;通常,它包含比 ID 令牌 (ID token) 更多的 声明 (claims) 。实际返回的属性取决于 OpenID 提供者 (OpenID Provider, OP) 的配置和用户的同意。请参考你的 OpenID 提供者的文档以获取可用的具体属性。

签名和加密

用户信息响应可以被签名和/或加密以确保其完整性和保密性。如果应用了其中一种或两种保护,用户信息端点的响应将是一个 JSON Web Token (JWT) ,而不是纯 JSON 对象。

另请参阅