用途
secure-oauth-oidc 技能用于设计、实现、审计、测试、排障或迁移安全的 OAuth 2.0 与 OpenID Connect(OIDC)系统。它以 RFC 9700 / BCP 240 为基线,再叠加所选用 OAuth 扩展、OpenID Connect、平台配置文件和部署环境的要求。
该技能把 OAuth 安全视为一组端到端的协议不变量,而不是参数清单。它明确:OAuth 用于委派访问,OpenID Connect 用于增加认证;不能仅凭 OAuth 推断登录身份,也不能把访问令牌当作 ID Token 使用。
该技能负责 OAuth/OIDC 协议层。对于浏览器面向的 BFF 中的应用会话(会话 Cookie、CSRF 与浏览器请求策略、公开/受保护端点分类、将令牌挡在浏览器之外),需加载 bff-entry-points 技能。
主要能力
- 建立安全配置文件:识别目标(委派 API 访问、用户认证、机器对机器、设备授权或令牌交换)、参与方、客户端类型与执行环境、流程与响应模式、信任拓扑、适用的配置文件及可用证据。
- 构建事务账本:从流程启动到回调、令牌使用、刷新、撤销与注销,记录每个制品的创建、存储、传输、校验、消费、过期与失效,以及所需的绑定或校验。
- 应用 RFC 9700 基线,覆盖三类边界:
- 重定向与授权边界:精确匹配预注册重定向 URI、拒绝开放重定向器、防止 CSRF、多发行方绑定、避免在凭据表单提交后使用 HTTP 307。
- 授权码边界:要求或推荐 PKCE(
S256)、每事务独立验证器、授权码短生命周期且一次性使用、二次兑换视为泄露信号并撤销相关令牌。 - 令牌边界:不使用资源所有者密码授权、避免隐式或从授权端点返回访问令牌、访问令牌不入 URI 查询参数、按资源/受众与最小权限限制、优先发送方约束令牌(DPoP 或 mTLS)、公开客户端刷新令牌需发送方约束或轮换并检测重用。
- 部署边界:发布并消费授权服务器元数据、TLS 终止代理处理安全头、防止点击劫持、控制 Referer、
postMessage使用精确注册目标源、不在授权端点启用 CORS。
- 叠加 OIDC 身份层:区分
state、PKCE 与nonce的职责;把 ID Token 当作协议对象校验(绑定本地账户到(iss, sub)、校验受众与授权方、时间与 nonce 语义、流程特定令牌哈希、UserInfosub与 ID Tokensub一致)。 - 提供三条任务路径:设计或迁移、实现、审查或事件诊断,并给出交付契约与需拒绝的虚假保证清单。
使用方式
按需加载参考文件:安全设计或评审总是加载 references/rfc9700-control-catalog.md;威胁建模、事件分析或编写否定测试加载 references/attack-and-test-catalog.md;任何 OIDC、ID Token、UserInfo、发现、多发行方或联合登录工作加载 references/oidc-validation.md;审计实现、报告发现或定义完成证据加载 references/review-and-delivery.md;选择扩展/配置文件或核对标准状态加载 references/standards-map.md。不要凭记忆使用规范性措辞,应以控制目录为准。
实现时建议使用维护中的 OAuth/OIDC 库而非手写协议或密码学;校验放在信任边界并失败关闭。审查时给出文件/行、配置路径、元数据字段或可复现场景作为证据,并涂掉所有凭据与令牌值。
适用场景
授权服务器与 OpenID Provider、OAuth 客户端与 OIDC 依赖方、资源服务器、原生应用、浏览器应用、多发行方登录、重定向 URI、授权码与 PKCE 流程、state 与 nonce 处理、ID Token 校验、令牌存储与重放、刷新令牌轮换、发送方约束令牌(DPoP 或 mTLS)、mix-up 与注入攻击、发现与元数据、反向代理,以及从隐式授权和资源所有者密码授权迁移。
限制
具体支持的库、版本、配置路径与运行时行为需以实际检查为准;技能明确要求把未检查的内容标记为未知,不能把缺失证据静默转换为合规。是否支持某扩展或配置文件须查当前一手文档。官方资料未提供安装命令、价格或平台支持信息,这些内容暂未提供。