先确定职责,再选工具
OAuth访问令牌可以是不透明值,也可以使用JWT。解码JWT不等于验证真实性;签名JWT不会自动加密内容。网关不能取代服务内部的业务授权。
| 要素 | 职责 | 明确的边界 |
|---|---|---|
| OAuth 2.0 | 委托授权。 | 本身不是用户登录协议。 |
| OpenID Connect | 基于OAuth 2.0的身份认证。 | 需要验证配置与令牌。 |
| JWT | 声明的格式。 | 解码、签名和加密不同。 |
| API网关 | 入口处的共同控制。 | 不取代对象级权限。 |
验证协议与每次访问
- 选择适合客户端的流程。用户操作路径应遵循现行授权码与PKCE建议,使用受维护的库,并严格控制重定向。
- 对接受的JWT检查签名、允许算法、签发者、受众及配置要求的时间约束。拒绝其他用途的令牌。
- 检查每个对象、操作和组织的权限。用虚构数据测试跨账户访问;通用角色或范围并不总是足够。
同时规划过期、撤销与事件处理
记录续期、密钥轮换、秘密泄露和撤销策略。本地令牌验证不会自动得知远程撤销。最小化令牌数据与日志;JWT或配额本身都不保证安全或合规。
一手资料
- IETF RFC 9700 — OAuth 2.0 Security Best Current Practice [EN]
- IETF RFC 8725 — JWT Best Current Practices [EN]
- OpenID Foundation — OpenID Connect Core 1.0 [EN]
- OWASP — Authorization Cheat Sheet [EN]
网关不能取代对象授权。
API 应验证令牌是否为其指定,以及调用者是否可以对对象执行操作。有效的 JWT 签名或成功的 OAuth 登录并不能建立这些权限。测试相邻身份和特权功能。
- 拒绝面向其他受众的有效令牌。
- 测试跨账户访问、私有字段和管理操作。
- 在不将令牌写入日志的情况下,测试令牌过期和角色变更。
一手资料:IETF — RFC 9700, OAuth 2.0 Security Best Current Practice. 相关方法:阅读实用指南.
通行密钥:准备域名和RP ID变更
区分业务账户、网页来源和RP ID,避免悄悄重新绑定凭据。
- 记录旧、新来源、RP ID及关联账户。相同账户名不意味着通行密钥对另一个RP ID有效。核查WebAuthn允许的组合和迁移期间可用的登录路径。
- 在授权测试环境用合适的库核查挑战、来源、RP ID和账户绑定。测试非预期来源和重复挑战。RP ID变化时准备经过身份验证的新注册;复制数据库行不是密钥迁移。
- 测试仅持有旧凭据的用户、恢复流程和已打开会话。结合已验证回退方式确定路径启用、停用顺序。新域名注册成功不能证明所有旧会话已撤销。
可复现的验收案例
虚构示例:数据不代表客户或实际观察结果。
查看案例输入
{
"old_origin": "https://login.old.example",
"old_rp_id": "old.example",
"new_origin": "https://login.new.example",
"new_rp_id": "new.example",
"same_service_account": true,
"expected": "authenticated_new_registration"
}预期判断
虚构例:账户相同,但old.example变为具有不同RP ID的new.example。不能悄悄重绑旧凭据;新注册必须经过计划的身份验证路径。
修改数据库能更改通行密钥的RP ID吗?
不能。RP ID是凭据验证范围的一部分。准备适用于新范围的有效注册和经过身份验证的账户映射。
一手资料:W3C — Web Authentication Level 2. 相关方法:阅读实用指南.
TLS续期:验证实际提供的证书
将续期追踪到TLS终结点和客户端后再确认变更完成。
- 列出名称、CDN、负载均衡、代理及提供证书的内部连接。记录实际证书、证书链、到期日和负责人。签发成功不证明所有节点已安装。保护私钥且不写入清单。
- 如供应商提供测试环境,在其中测试自动化。检查验证挑战、SAN名称、受保护存储和组件重新加载。按密钥策略有可用证书时避免每次启动都签发。
- 使用支持的客户端在相关路径检查名称、日期和信任链。保持TLS验证开启。监控实际证书到期日而非仅调度状态。回退需有效证书和未泄露密钥,否则修正或隔离故障点。
可复现的验收案例
虚构示例:数据不代表客户或实际观察结果。
查看案例输入
{
"issuance_succeeded": true,
"proxy_count": 2,
"proxies_serving_expected_certificate": 1,
"other_proxy_certificate_expired": true,
"tls_verification_enabled": true,
"expected": "change_incomplete_fix_and_verify_client_paths"
}预期判断
虚构例:续期成功,但两个代理之一仍提供过期证书。变更未完成,应修正该代理并检查客户端路径,不关闭TLS验证。
一手资料:Let’s Encrypt — Integration Guide. 相关方法:阅读实用指南.
浏览 CISA KEV 目录
此语言版本的详细参考说明以英语提供。
One identifier can span several technical layers
An entry may concern a library, server or component embedded in an appliance. Search the exact name, known dependencies and the distributed product’s advisory. Catalogue aliases are not a complete list of affected versions.
- Connect the CVE, component supplier and final-product supplier.
- Check version, configuration and execution path in the authorised environment.
- Do not infer remediation from an empty search result.
CISA KEV · 2026.11.06 · Documentary review : 2026-11-07
扩展:权限与访问
此语言版本的详细参考说明以英语提供。
Robust authentication does not describe extension access
Phishing resistance does not remove the need to examine what runs in the browser after a session opens. A manifest provides clues about cookies, scripting, debugging and identity without establishing collection.
- Test approved extensions in a profile dedicated to sensitive operations.
- For identity, inspect OAuth scopes and recipients; this permission does not enumerate identity-provider rights.
- Distinguish session revocation, token revocation, extension disablement and native-component removal.
Read the permission directory and manifest examples →
Google Chrome · Stay secure · Documentation consulted 2026-10-23; browser behaviour remains version-dependent
