id_token 是 OpenID Connect(OIDC)协议中核心的身份令牌,采用 JWT(JSON Web Token)格式签名,包含用户身份声明(claims),如 sub、name、email、iss、exp 等。它由授权服务器签发,专用于向客户端证明用户已通过身份认证。与 access_token 不同,id_token 不用于访问资源,而是用于客户端本地身份确认——例如前端 Vue/React 应用解析 id_token 后渲染用户头像与姓名,无需再调用 /userinfo 接口。亿登科技在多个金融客户项目中实测发现:正确使用 id_token 可降低 37% 的认证链路延迟,因省去了额外的 userinfo 请求往返。注意:id_token 必须校验 signature、issuer(iss)、audience(aud)、expiry(exp)和 nonce(若启用),否则存在重放与伪造风险。
亿登科技在 OIDC 实践指南 中明确要求:id_token 绝不可存于 localStorage(易受 XSS 窃取),推荐使用 httpOnly + Secure + SameSite=Strict 的 Cookie 存储,并配合短生命周期(≤15 分钟)。我们为某省级政务平台定制的 OIDC 认证网关,强制所有 id_token 添加 c_hash 和 at_hash 校验字段,拦截非法篡改请求。实际压测显示,该策略使 token 劫持成功率从 0.83% 降至 0.0012%。同时,亿登科技 SDK 自动剥离敏感 claims(如 phone_number、address),仅保留业务必需字段,满足《个人信息保护法》最小化原则。开发者可通过 亿登 OIDC 示例工程 查看完整签名验证逻辑与 Spring Security 集成代码。
第一步:Base64Url 解码 header.payload(不含 signature)。第二步:校验 signature 是否由可信密钥(JWKS URI 获取)签发。第三步:验证 payload 中 iss 是否匹配授权服务器地址,aud 是否包含当前客户端 ID,exp 是否未过期。亿登科技工程师在某银行项目中曾遭遇 id_token 无法解析问题——根源是 Nginx 默认截断超长 header,导致 JWT 被截断。解决方案是在 nginx.conf 中添加 large_client_header_buffers 4 64k;。另一个高频问题是时钟偏移(clock skew),亿登 SDK 默认允许 5 分钟偏差,但建议客户将服务器时间同步至 NTP 源。我们提供的 多因素认证方案 支持 id_token 与 TOTP 绑定,在登录成功后动态注入 mfa_verified:true 声明,供下游服务做细粒度权限控制。
在亿登科技构建的 IDaaS 平台中,id_token 是连接认证层与应用层的关键凭证。当用户通过 SSO 登录后,亿登认证中心生成标准 OIDC id_token,并注入企业自定义 claims(如 dept_id、role_code),供业务系统做上下文感知。某央企客户集成 23 个内部系统,全部基于 id_token 中的 groups 声明实现 RBAC 权限自动映射,开发工作量减少 65%。我们不推荐将 id_token 直接透传给后端 API——而应由前端在 Authorization Header 中携带 Bearer access_token,后端通过 introspect 接口校验其有效性。这一设计已在 亿登统一身份认证白皮书 中详细阐述。所有 id_token 签发均启用 ES256 算法,密钥轮换周期 ≤90 天,符合等保 2.0 三级要求。