OIDC
什么是 OIDC
OIDC(OpenID Connect)是基于 OAuth 2.0 协议构建的身份认证层。它将 OAuth 2.0 的授权能力与身份认证相结合,是一个 industry-standard 的身份认证协议。
与 OAuth 2.0 的关系
OIDC = Identity + Authentication + OAuth 2.0| 协议 | 核心能力 | 解决的问题 |
|---|---|---|
| OAuth 2.0 | 授权(Authorization) | 你能被允许做哪些事情 |
| OIDC | 认证 + 授权(Authentication + Authorization) | 你是你所声称的那个用户 |
授权要在认证之后进行。只有确定了用户身份,才能决定赋予其哪些权限。
为什么需要 OIDC
OAuth 2.0 是一个优秀的授权协议,但它不提供完善的身份认证功能:
- OAuth 2.0 的 Access Token 不携带用户身份信息
- 不同厂商对"用户信息"的返回格式各不相同
- 无法标准化地获取用户的基本资料(如用户名、邮箱等)
OIDC 在 OAuth 2.0 之上标准化了身份认证流程:
- 使用 OAuth 2.0 获取 Access Token
- 同时获取 ID Token(包含用户身份信息的 JWT)
- 通过标准化接口获取用户详细资料

OIDC 的核心组件
ID Token
ID Token 是一个 JWT(JSON Web Token),包含以下关键信息:
| 字段 | 说明 |
|---|---|
iss | 签发者(Issuer) |
sub | 用户唯一标识(Subject) |
aud | 受众(Audience) |
exp | 过期时间 |
iat | 签发时间 |
UserInfo Endpoint
用于获取用户的详细资料,如昵称、头像、邮箱、手机号等。
Discovery Document
标准化的服务发现文档,客户端可自动获取 OIDC 服务商的所有端点地址。
适用场景
OIDC 适用于各种类型的客户端:
- 服务端应用:Web 应用后台完成认证流程
- 单页应用(SPA):浏览器端通过 PKCE 扩展安全认证
- 移动 App:原生应用调用系统浏览器完成认证
OIDC 完全兼容 OAuth 2.0,已有的 OAuth 2.0 基础设施可以平滑升级支持 OIDC。