configuring-oauth2-authorization-flow
配置安全的 OAuth 2.0 授权流程,包括带 PKCE 的授权码流、客户端凭据和设备授权授予。本技能涵盖流程选择、PKCE 实施、令牌生命周期管理、范围设计以及符合 OAuth 2.1 安全要求。
Best use case
configuring-oauth2-authorization-flow is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
配置安全的 OAuth 2.0 授权流程,包括带 PKCE 的授权码流、客户端凭据和设备授权授予。本技能涵盖流程选择、PKCE 实施、令牌生命周期管理、范围设计以及符合 OAuth 2.1 安全要求。
Teams using configuring-oauth2-authorization-flow should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/configuring-oauth2-authorization-flow/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How configuring-oauth2-authorization-flow Compares
| Feature / Agent | configuring-oauth2-authorization-flow | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
配置安全的 OAuth 2.0 授权流程,包括带 PKCE 的授权码流、客户端凭据和设备授权授予。本技能涵盖流程选择、PKCE 实施、令牌生命周期管理、范围设计以及符合 OAuth 2.1 安全要求。
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# 配置 OAuth 2.0 授权流程 ## 概述 配置安全的 OAuth 2.0 授权流程,包括带 PKCE(Proof Key for Code Exchange)的授权码流、客户端凭据和设备授权授予。本技能涵盖流程选择、PKCE 实施、令牌生命周期管理、范围设计以及符合 OAuth 2.1 安全要求。 ## 目标 - 为公共客户端和机密客户端实施带 PKCE 的授权码流 - 为机器间通信配置客户端凭据流 - 设计最小权限范围层次结构 - 实施安全的令牌存储、刷新和撤销 - 应用 OAuth 2.1 最佳实践和 RFC 9700 安全建议 - 验证令牌完整性并防止常见 OAuth 攻击 ## 核心概念 ### OAuth 2.0 授权类型 1. **授权码 + PKCE**:推荐用于所有客户端类型(Web、移动、SPA)。PKCE 在 OAuth 2.1 中为强制要求。 2. **客户端凭据**:无用户上下文的机器间认证。 3. **设备授权授予(RFC 8628)**:用于输入受限设备(智能电视、CLI 工具)。 4. **刷新令牌**:长期有效的令牌,无需重新认证即可获取新访问令牌。 ### PKCE(授权码交换证明密钥) PKCE(RFC 7636)防止授权码拦截攻击: 1. 客户端生成随机 `code_verifier`(43-128 个字符,不保留 URI 字符) 2. 客户端计算 `code_challenge = BASE64URL(SHA256(code_verifier))` 3. 授权请求包含 `code_challenge` 和 `code_challenge_method=S256` 4. 令牌请求包含原始 `code_verifier` 5. 服务器验证 `SHA256(code_verifier)` 与存储的 `code_challenge` 匹配 ### 令牌类型 - **访问令牌**:短期有效(5-60 分钟),bearer 或 DPoP 绑定 - **刷新令牌**:长期有效,一次性使用并轮换 - **ID 令牌(OIDC)**:包含用户身份声明的 JWT ## 实施步骤 ### 步骤 1:带 PKCE 的授权码流 1. 生成加密随机 code_verifier(最少 43 个字符) 2. 使用 S256 方法计算 code_challenge 3. 使用以下参数将用户重定向到授权端点: - response_type=code - client_id、redirect_uri、scope、state - code_challenge、code_challenge_method=S256 4. 用户进行认证和授权 5. 授权服务器使用授权码重定向 6. 在令牌端点用 code + code_verifier 交换令牌 7. 验证 state 参数与原始值匹配 ### 步骤 2:范围设计 - 定义细粒度范围:`read:users`、`write:orders`、`admin:settings` - 遵循最小权限:只请求所需的最少范围 - 在资源服务器上实施范围验证 - 记录范围层次结构和同意要求 ### 步骤 3:令牌安全 - 安全存储令牌(Web 应用使用 httpOnly Cookie,移动端使用密钥链) - 实施带轮换的令牌刷新(一次性使用刷新令牌) - 设置适当的过期时间:访问令牌 5-15 分钟,刷新令牌 8-24 小时 - 启用 DPoP(持有证明)用于发送方约束令牌 - 实施令牌撤销端点 ### 步骤 4:客户端凭据流 1. 注册服务客户端,包含 client_id 和 client_secret 2. 请求令牌:POST /oauth/token,参数 grant_type=client_credentials 3. 包含所需权限的 scope 4. 安全存储 client_secret(保险库、环境变量,而非代码中) 5. 为更高保障级别实施基于证书的客户端认证 ### 步骤 5:安全加固 - 对所有授权码流强制执行 PKCE - 使用精确的重定向 URI 匹配(无通配符) - 使用 state 参数实施 CSRF 保护 - 启用刷新令牌轮换,并在检测到重用时撤销 - 应用 RFC 9700 安全最佳实践 - 阻止隐式授予和 ROPC(在 OAuth 2.1 中已移除) ## 安全控制 | 控制项 | NIST 800-53 | 描述 | |---------|-------------|-------------| | 访问控制 | AC-3 | 基于令牌的访问执行 | | 认证 | IA-5 | 客户端凭据管理 | | 会话管理 | SC-23 | 令牌生命周期管理 | | 审计 | AU-3 | 记录所有令牌颁发和撤销 | | 加密保护 | SC-13 | PKCE 和令牌签名 | ## 常见陷阱 - 使用隐式授予(OAuth 2.1 中已移除)而非授权码 + PKCE - 将令牌存储在 localStorage(容易受 XSS 攻击)而非 httpOnly Cookie - 未验证 state 参数,使 CSRF 攻击成为可能 - 使用通配符重定向 URI,允许开放重定向利用 - 未实施刷新令牌轮换,导致令牌盗窃持续有效 ## 验证 - [ ] 带 PKCE 的授权码流成功完成 - [ ] 在令牌端点验证了 PKCE code_challenge - [ ] state 参数防止了 CSRF - [ ] 访问令牌在配置的生命周期内过期 - [ ] 刷新令牌轮换在每次使用时颁发新的刷新令牌 - [ ] 令牌撤销使访问令牌和刷新令牌都失效 - [ ] 客户端凭据流适用于服务间调用 - [ ] 资源服务器正确执行范围
Related Skills
testing-oauth2-implementation-flaws
测试 OAuth 2.0 和 OpenID Connect 实现中的安全缺陷,包括授权码拦截、重定向 URI 操控、OAuth 流程中的 CSRF、令牌泄露、权限范围(scope)提升以及 PKCE 绕过。测试人员对授权服务器、客户端应用及令牌处理进行评估,发现可导致账户接管或未授权访问的常见错误配置。适用于 OAuth 安全测试、OIDC 漏洞评估、OAuth2 重定向绕过或授权码流程测试相关请求。
testing-api-for-broken-object-level-authorization
测试REST和GraphQL API中的越权对象访问(BOLA/IDOR)漏洞,即已认证用户通过操纵API请求中的对象标识符 来访问或修改属于其他用户的资源。测试人员拦截API调用,识别对象ID参数(数字ID、UUID、slug), 并系统性地替换为其他用户的ID,以确定服务器是否执行了对象级授权。 对应OWASP API安全Top 10 2023 API1(越权对象访问)。
securing-github-actions-workflows
本技能涵盖加固 GitHub Actions 工作流以防范供应链攻击、凭据盗窃和权限提升。 内容包括将 action 固定到 SHA 摘要、最小化 GITHUB_TOKEN 权限、防止机密泄露、 防止工作流表达式中的脚本注入,以及为工作流变更实施必要的审阅者机制。
implementing-patch-management-workflow
补丁管理(Patch Management)是识别、测试、部署和验证软件更新以修复组织 IT 基础设施漏洞的系统化流程。有效的补丁管理工作流通过结构化测试、审批门禁和分阶段发布,在降低攻击面的同时将运营中断降至最低。
exploiting-broken-function-level-authorization
测试 API 的函数级授权破坏(BFLA)漏洞,即普通用户可以通过直接调用来执行管理功能或访问特权 API 端点。测试人员识别管理员和特权端点,然后通过操纵 HTTP 方法、URL 路径和请求参数尝试使用普通用户凭据访问这些端点。对应 OWASP API5:2023 函数级授权破坏。适用于 BFLA 测试、管理员端点绕过、函数级访问控制测试或 API 权限提升等请求场景。
detecting-broken-object-property-level-authorization
检测和测试OWASP API3:2023对象属性级授权失效(BOPLA)漏洞,包括过度数据暴露和批量赋值攻击。
configuring-zscaler-private-access-for-ztna
配置 Zscaler Private Access(ZPA),通过部署 App Connector、定义应用程序段、 基于用户身份和设备态势配置访问策略以及与 IdP 集成,以零信任网络访问取代传统 VPN。
configuring-windows-event-logging-for-detection
配置 Windows 事件日志与高级审计策略,以生成高质量安全事件用于威胁检测和取证调查。 适用于为登录事件、进程创建、权限使用和对象访问启用审计策略,以支撑 SIEM 检测规则的场景。
configuring-windows-defender-advanced-settings
配置 Microsoft Defender for Endpoint(MDE)高级防护设置,包括攻击面缩减规则、受控文件夹访问、 网络保护和漏洞利用防护。适用于在默认 Defender 设置基础上加固 Windows 端点、部署企业级端点防护 或满足高级恶意软件防御合规要求的场景。
configuring-tls-1-3-for-secure-communications
TLS 1.3(RFC 8446)是传输层安全协议的最新版本,在安全性和性能方面相比 TLS 1.2 有显著改进,将握手延迟降低至 1-RTT,移除了过时的密码套件并强制要求完美前向保密。
configuring-suricata-for-network-monitoring
部署和配置 Suricata IDS/IPS,使用 Emerging Threats 规则集、EVE JSON 日志记录和自定义规则, 进行实时网络流量检测(intrusion detection)、威胁检测,并与 SIEM 平台集成实现集中化安全监控。
configuring-snort-ids-for-intrusion-detection
安装、配置和调优 Snort 3 入侵检测系统(intrusion detection system),使用自定义和社区规则集、 预处理器和告警输出插件,在授权网络分段上监控网络流量中的恶意活动。