在你使用 Google、微信、GitHub 等第三方登录网站时,你可能注意到登录后不仅获得了授权,还能获取用户名、头像甚至电子邮箱。这种在“授权”基础上获取“身份信息”的机制,就是由 OpenID Connect(OIDC) 实现的。本文将带你全面了解 OpenID Connect 是什么、它与 OAuth 2.0 的关系、核心流程及实际应用价值。
一、OpenID Connect 是什么?
OpenID Connect(简称 OIDC) 是一个基于 OAuth 2.0 协议构建的 身份认证协议(Authentication Protocol)。它允许客户端在获取授权的同时,安全地获得用户身份信息(如用户ID、昵称、邮箱、头像等),并且提供标准化的登录流程和接口。
简而言之,OAuth 2.0 是“你能不能访问资源”,OpenID Connect 是“你是谁”。
二、OIDC 与 OAuth 2.0 的关系
项目 | OAuth 2.0 | OpenID Connect |
---|---|---|
类型 | 授权框架 | 认证协议 |
目标 | 授权访问资源 | 确认用户身份 |
返回结果 | Access Token | Access Token + ID Token |
用户信息 | 通常需额外接口获取 | 内置支持 /userinfo 接口 |
OIDC 是 OAuth 2.0 的扩展和补充,专注于“身份认证”这一环节。
三、OIDC 的关键术语
- ID Token:一段 JWT 格式的身份令牌,包含用户身份的声明(Claims),如
sub
(用户ID)、email
、name
等。 - Access Token:用于访问受保护资源(如API)的令牌,与 OAuth 2.0 相同。
- UserInfo Endpoint:OIDC 定义的标准接口,客户端可用 Access Token 请求详细用户资料。
- Issuer(iss):签发 ID Token 的服务方,如
https://accounts.google.com
。
四、OIDC 的典型登录流程
-
用户点击“使用XX账号登录”
- 客户端将用户跳转至认证服务器(如 Google)进行身份验证。
-
用户登录并授权
- 用户确认允许第三方应用访问自己的基本信息。
-
返回授权码
- 授权服务器跳转回客户端,并附带一次性授权码。
-
换取 Token
- 客户端用授权码获取 Access Token 和 ID Token。
-
解析 ID Token
- 客户端验证签名、解析 Token,获得用户身份信息。
-
获取用户资料(可选)
- 客户端使用 Access Token 调用
/userinfo
接口,获取完整的用户信息。
- 客户端使用 Access Token 调用
五、ID Token 的结构
ID Token 是一个标准的 JWT(JSON Web Token),结构如下:
Header.Payload.Signature
其中 Payload 中包含如下声明(Claims):
{
"iss": "https://openid.example.com",
"sub": "1234567890",
"aud": "client123",
"exp": 1688888888,
"iat": 1688880000,
"name": "Alice",
"email": "alice@example.com"
}
sub
:用户唯一 IDaud
:接收方(客户端 ID)exp
:过期时间iat
:签发时间email
、name
:可选信息
六、OIDC 的优势
- ✅ 标准化身份认证协议
- 易于集成、文档完善、兼容主流认证平台。
- ✅ 跨平台、跨设备
- Web、移动 App、小程序等统一身份认证方式。
- ✅ 保护用户隐私
- 用户可明确授权范围,如只公开昵称、不公开邮箱。
- ✅ 安全性强
- 基于 JWT 签名验证,支持 HTTPS、安全跳转、防 CSRF 等机制。
- ✅ 无密码登录
- 客户端无需直接处理密码,减少被盗风险。
七、常见应用场景
- 第三方社交账号登录(微信/QQ/Google 登录)
- 多平台统一身份认证(企业 SSO、教育平台)
- 支持 OAuth 的 SaaS 平台扩展身份识别功能
- 跨系统账号打通(门户、CRM、ERP 等)
八、支持 OpenID Connect 的主流平台
平台 | 描述 |
---|---|
支持 OIDC 登录及用户资料获取 | |
Microsoft Azure AD | 提供企业级身份认证与权限管理 |
Auth0 | 第三方身份认证平台,支持 OIDC |
Okta | 企业 SSO 解决方案,兼容 OIDC |
Apple ID / 微信开放平台 | 实际采用 OIDC 标准流程 |
九、OIDC 与 OpenID(旧版)区别
- OpenID Connect 是新一代标准,基于 OAuth 2.0 构建,现代系统首选。
- 旧版 OpenID(1.0/2.0) 早期的分布式身份认证协议,已逐步淘汰。
十、总结
OpenID Connect 是现代身份认证的标准协议,完美结合了 OAuth 的授权机制与 JWT 的自包含结构,让第三方应用可以在无需处理密码的前提下,获取用户身份并确保安全性。它已经成为 社交登录、企业 SSO、统一身份平台 等系统的首选解决方案。