Common AuthCommon AuthAPI 文档
OAuth 2.0 · OIDCOpenAPI v1.0.0

指南

OpenID Connect

Discovery、ID Token 与 UserInfo

OpenID Connect

OpenID Connect(OIDC)构建在 OAuth 2.0 之上,新增了身份层:客户端可以通过 ID Token 与 UserInfo 端点获得已认证用户的身份信息。

Discovery

通过 OIDC Discovery 自动发现配置,避免在客户端硬编码端点地址:

GET /.well-known/openid-configuration

响应包含 issuerauthorization_endpointtoken_endpointuserinfo_endpointjwks_uri 及支持的 scopes_supportedresponse_types_supported 等元数据。OAuth 2.0 的授权服务器元数据另见:

GET /.well-known/oauth-authorization-server

ID Token

在授权码流程的令牌响应中,若请求了 openid scope,会返回 id_token。它是一个 JWS 签名令牌,包含:

声明 说明
iss 签发者,须与 Discovery 的 issuer 一致
sub 用户唯一标识
aud 目标客户端(你的 client_id
exp 过期时间
iat 签发时间
nonce 与授权请求中的 nonce 一致(如携带)
email / email_verified 请求 email scope 时提供
name / picture 请求 profile scope 时提供

校验 ID Token

  1. /.well-known/jwks.json 获取签名公钥(JWKS)。
  2. 使用 RS256 验证签名。
  3. 校验 issaud(须包含你的 client_id)、exp
  4. 校验 nonce 与授权请求一致,防止重放。
  5. 校验 iat 距今不超过可接受范围。
GET /.well-known/jwks.json

UserInfo

使用访问令牌获取用户详细资料:

GET /api/oauth/userinfo
Authorization: Bearer ACCESS_TOKEN

也可通过表单携带 access_token 调用 POST 变体。返回的字段由令牌的 scope 决定:profile 提供姓名、头像等,email 提供邮箱及验证状态。

Scope 与声明

scope 提供的主要声明
openid sub(必选,标识用户)
profile namepreferred_usernamepicture
email emailemail_verified
offline_access 可选。授权码换票始终返回刷新令牌;此范围仅作显式声明

无提示认证

如用户已登录且会话有效,可请求 prompt=none 获取静默认证结果;未登录时返回 login_required 错误而不会跳转登录页。通过 max_age 可限制允许的会话年龄。