Security

Client Secret 只用于 Confidential 后端

  • client_secret 只在 Web(Confidential)应用创建/轮换时展示一次,请立即复制并存入服务端环境变量/密钥管理;
  • 浏览器 bundle、App 内置、前端代码仓库中禁止出现 secret;
  • 泄露后立即在「Credentials」页轮换(旧 secret 立即失效,轮换会记入审计日志);
  • Native/Public 应用不签发 secret,一律使用 PKCE S256。

state / nonce / PKCE

  • state:每次授权请求生成随机值,回调时严格比对(防登录 CSRF/中间人注入授权响应);
  • nonce:绑定 id_token,防重放;校验失败必须拒绝;
  • code_verifier:PKCE S256,只存在于会话/内存,绝不出现在 URL、日志或前端存储。

不在前端保存 Token

  • access/refresh token 与 id_token 只保存在你的服务端,浏览器只持有你自己的会话 cookie(HttpOnly);
  • 禁止把 token 写入 localStorage/sessionStorage 或明文 cookie;
  • refresh token 视为敏感凭据:限制使用范围、定期轮换、泄露立即吊销。

精确 Callback(Redirect URI)

  • 注册值即匹配值:Mini-HBUT 对 redirect_uri 做逐字符精确匹配,不支持通配符、前缀/后缀或正则扩展;
  • 禁止 fragment(#)与 userinfo(user@host)形式;Web 生产必须 https;
  • Native 使用自定义 scheme(RFC 8252 §7.1)或 loopback(http://127.0.0.1 动态端口);
  • 应用启用后新增/修改回调会使应用重新进入审核,请预留审核时间。

如何 Revoke

  • 应用级:在 Developer Console 的「Danger Zone」撤销应用(终态,不可恢复);
  • 令牌级:按 OAuth 2.0 标准的 POST /oauth/revoke 撤销已签发的 token;
  • 发现凭据泄露时:立即轮换 secret + 撤销相关令牌 + 检查审计日志。

本页为安全基线说明;更细的横切加固(密钥托管、传输认证等)由平台安全硬化统一跟进。