Skip to content

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 之上标准化了身份认证流程:

  1. 使用 OAuth 2.0 获取 Access Token
  2. 同时获取 ID Token(包含用户身份信息的 JWT)
  3. 通过标准化接口获取用户详细资料

OIDC 认证流程

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。

竹云IDaaS开放平台