用途:为 Node.js 或 Python 服务端应用接入 Google 身份验证,覆盖服务端到服务端、代表终端用户操作、以及用户登录等场景。\n\n主要能力与方法:\n- 应用默认凭据(ADC):Node.js 用 GoogleAuth,Python 用 google.auth.default(),适用于所有用户共用同一身份的服务端场景。ADC 查找顺序为 GOOGLE_APPLICATION_CREDENTIALS 环境变量、gcloud application-default login 文件、附加服务账号(metadata)。\n- OAuth 2.0:Node.js 用 OAuth2Client,Python 用 google_auth_oauthlib.flow.Flow,代表终端用户执行操作;refresh_token 仅在首次授权时返回,可用 prompt: 'consent' 强制重新同意。\n- 服务端校验 Google ID 令牌:Node.js 用 client.verifyIdToken(),Python 用 id_token.verify_oauth2_token(),只检查签名、aud、exp、iss,不等于网页登录的完整安全契约。\n- JWT / 服务账号:Node.js 用 JWT,Python 用 service_account.Credentials,适用于单一身份的服务端到服务端调用。\n- API Key:用于公开数据且无用户上下文。\n- Compute:在 GCP 上使用附加服务账号。\n- 工作负载身份联合:AWS/Azure/OIDC 到 GCP,无需服务账号密钥。\n\n依赖安装(保留原样):\nnpm install google-auth-library\nnpm install googleapis\npip install google-auth\npip install google-auth-oauthlib\npip install google-api-python-client\n注意 client.fetch() 需 google-auth-library ≥ 10.1.0;9.x 请改用 client.request()。\n\n安全实践:client_secret 与服务账号密钥不得出现在客户端代码;OAuth 流程校验 state 防 CSRF;用 sub 而非 email 作为唯一用户标识;安全存储 refresh_token;校验外部凭据配置中的 token_url、service_account_impersonation_url 指向 googleapis.com;优先使用工作负载身份联合替代服务账号密钥;生产环境缺失密钥应拒绝启动而非降级;日志需按白名单脱敏,不记录任何令牌或密钥;强制 HTTPS;凭据存储读写失败视为认证失败。Python 热路径复用单个 Request 实例。\n\n限制:资料未说明具体收费与价格。非 Claude Code 环境(Cursor、Codex、skills CLI、API 容器)下 PreToolUse 门不运行,需自行确保不泄露凭据;以复制而非插件方式安装时仅有文档无钩子;无浏览器或控制台访问时,同意屏幕与 client-id 部分需人工完成。终端用户网页登录的完整安全检查清单(nonce 绑定、email_verified、登录 CSRF 防护、账号关联)不在此技能内,需参考 google-signin 技能。参考资料文件涵盖 OAuth 2.0 Web 服务器流程、ADC 与服务账号、Google 登录、工作负载身份联合等主题。
google-auth
安全与审计
更新于 10-15 23:25