切换深色模式
Google Agent 身份文档验证记录
日期:2026-10-04(Asia/Shanghai)。对象:落地设计。本次交付是实施文档和配套验证实验,不是已上线的认证服务。
1. 需求与证据
| 要求 | 对应产物/证据 | 结论 |
|---|---|---|
| 将 Google Agent 身份方案整理为 Markdown | docs/agent/google-agent-identity.md | 已完成 |
| 覆盖用户本地与服务器沙箱 | 主文档第 5、6 节,两条入口及统一凭证契约 | 已完成 |
| 来源不确定的官方/第三方客户端 | 分离用户、实例密钥、登记审核和软件来源证明;无证据默认未验证 | 已完成 |
| 认证系统只做认证 | 项目自主授权,业务 403 与认证失败分开;不接管业务 scope/ACL | 已完成 |
| 具备可实施细节 | 配置清单、接口契约、数据模型、生命周期、部署示例、阶段产物与 G01–G14 | 已完成设计;真实环境执行为上线门槛 |
| 写完自行验证 | 官方核对、签名反例实验、文档结构/示例语法检查、站点构建 | 见以下实际结果 |
2. 官方能力核对
| 关键说法 | 官方证据 | 核对结果 |
|---|---|---|
| 原生应用不能保守共享 client_secret,支持 PKCE | Google native OAuth、RFC 8252 | 支持;不把 client_id 当软件证明 |
| OAuth 品牌审核与请求级来源证明不同 | 品牌审核 | 登记审核与运行证明分开描述 |
| App Check 保证取决于提供方 | App Check | 不宣称默认可证明任意桌面 Agent |
| Agent Identity 与受支持托管资源关联 | Agent Identity 概览 | 不把资源级身份描述为任意容器副本身份 |
| 外部 OIDC 路径为 Preview;默认不绑定证书 | 外部 OIDC | 主文档明确保留 bearer 重放边界 |
| Agent CLI 指南为 Preview,区域状态另列 | 部署指南、地区表 | 不用区域 GA 代替具体路径状态 |
| STS issuer 与 Google 用户 issuer 不同 | 外部 OIDC 文档、用户 ID Token 验证 | 两套验证配置与 subject 映射分开 |
| DPoP 只证明持钥,不证明官方软件 | RFC 9449 | 自有 DPoP 扩展未冒称 Google 桌面原生能力 |
| 3LO 管理外部服务的用户同意与令牌 | auth manager 3LO | 与认证-only 系统分界明确 |
公开 Google 用户 Discovery 地址通过网页工具成功读取:Discovery。这是公开元数据可获取的证据,不是实际登录或项目私有信任域 JWKS 联调证据。
执行环境中的 Python HTTP 请求遭遇网络连接拒绝,Google OIDC 总览页面也未能通过网页工具读取;改用可读取的 Google 用户 ID Token 验证文档与 OIDC Core 核对必要声明。未将网络失败描述为 Google 服务不可用。
3. 本地实验实际结果
环境:Node.js v24.19.0、pnpm 11.19.0、Python 3.12.10、VitePress 1.6.4。
powershell
node --test --test-isolation=none docs/public/examples/google-agent-identity-lab.test.mjs结果:50 项通过,0 失败,0 跳过。使用真实 RSA/EC 签名与验证,密钥运行时生成,没有真实 Google token,也没有持久化私钥。
| 组 | 项数 | 覆盖 |
|---|---|---|
| JWT 与 JWKS | 23 | 签名篡改、错公钥、issuer/audience、时间和主体类型、算法/类型、恶意 jku、公钥刷新/过期 |
| DPoP | 14 | 公钥绑定、盗取 token、重放、HTTP 方法/URL、时间、ath、nonce、proof 签名、缺失 cnf |
| 身份绑定与撤销 | 13 | 自报用户/租户/官方来源忽略、用户切换、撤销、凭证/票据到期、跨租户与错工作负载/任务/受众、两次兑换 |
限制:实验的 JWKS 获取是注入的固定模拟;状态与 replay cache 是进程内实现。两次票据兑换实验只证明同步内存模型最多一次成功,不证明真实数据库事务、Redis 原子性或多副本并发已通过。未实现完整 OAuth、PKCE 兑换、Google 登录或 App Check;正式系统使用成熟库和共享存储,并完成对应 G01–G14 联调。
第一次默认测试器启动报 spawn EPERM,尚未执行任何用例;切换为 Node.js 24 单进程测试后,50 项全部实际执行。没有跳过失败用例。
4. 文档和构建检查
执行 python scripts/verify-google-agent-identity-doc.py:PASS。1 个 Python 示例通过 AST 语法检查,1 个 JSON 示例解析成功;15 个出处引用存在;代码围栏完整;报告、实验附件与侧栏入口存在;G01–G14 均明确保留未实测状态。
执行 pnpm docs:build:退出码 0,构建成功,客户端/服务端包与页面渲染完成。仅出现包体大于 500 kB 的构建提醒,不影响本次文档生成。未关闭死链接检查。
首次构建发现尚未创建的验证报告链接;已创建本报告并修复链接后通过构建。最终生成的两个 HTML 页面和两个实验附件亦检查存在。
复核命令:
powershell
python scripts/verify-google-agent-identity-doc.py
node --test --test-isolation=none docs/public/examples/google-agent-identity-lab.test.mjs
pnpm docs:build5. 真实环境未验证项与交付边界
当前工作区没有 gcloud 可执行程序,也没有本任务所需的 Google 测试账号/项目及部署凭证。本次没有创建、修改或计费任何 Google 云资源。
主文档 G01–G14 全部保留“未实测”。真实用户登录、授权码 PKCE 拒绝、真实 DPoP SDK 兼容性、多副本 Redis replay cache、Google Agent 部署与元数据凭证、公钥轮换、跨实例绑定、项目授权及 App Check,需要实施方按所选路径完成验收。
“可落地”在本交付中的含义是:给出可实施的组件边界、协议选择、配置、接口、部署入口和可判定验收标准;不表示没有执行证据的云端路径已上线或已验证。文档和离线验证的完成不替代生产上线门槛。