SovereignID
文档目录 OIDC 端点说明

OpenID Connect

OIDC 端点说明

授权码模式

了解 discovery、authorize、token、userinfo、jwks 以及常用 scope 和 claims。

SovereignID 作为 OpenID Connect Provider,通过一组标准端点完成用户登录、授权码交换、身份声明读取和签名校验。 接入方应优先使用自动发现地址,避免分别维护端点。

一、统一 issuer

<SOVEREIGNID_ISSUER_URL> 替换为当前环境的公网根地址,例如 https://id.example.com。环境变量、用户实际访问地址和接入方使用的 discovery 地址必须属于同一个 origin。

不要混用内外网地址 即使业务服务器可通过内网访问 SovereignID,也不要在 discovery 中混入内网 IP,否则 issuer 校验、回调和令牌验证可能失败。

二、标准端点

端点地址用途
Discovery <ISSUER>/.well-known/openid-configuration 自动获取 issuer、授权、令牌、UserInfo 和 JWKS 地址。
Authorization <ISSUER>/oauth/authorize 浏览器进入登录和授权流程,成功后返回授权码。
Token <ISSUER>/oauth/token 服务端使用授权码、client_id、client_secret 和 redirect_uri 换取令牌。
UserInfo <ISSUER>/oauth/userinfo 携带 access token 读取当前用户的标准身份声明。
JWKS <ISSUER>/oauth/jwks 向接入方提供验证 ID Token 签名所需的公钥。

三、Scope 与身份声明

Scope主要声明说明
openidsubOIDC 必选 scope,用稳定 subject 标识用户。
profilepreferred_usernamenicknamename用于用户名和显示名称同步。
emailemailemail_verified用于邮箱同步;用户必须先绑定并验证邮箱。
groupsgroups返回用户所属 Django Group 的名称列表。

四、接入检查

  • 为每个业务系统创建独立的 Confidential / Authorization Code 应用,不共用客户端密钥。
  • 回调地址必须与业务系统实际发出的 redirect_uri 完全一致。
  • 至少请求 openid profile email;需要用户组时再加入 groups
  • 客户端密钥只保存在业务系统服务端,不进入浏览器、公开文档或代码仓库。