configuring-oauth2-authorization-flow

配置安全的 OAuth 2.0 授权流程,包括带 PKCE 的授权码流、客户端凭据和设备授权授予。本技能涵盖流程选择、PKCE 实施、令牌生命周期管理、范围设计以及符合 OAuth 2.1 安全要求。

9 stars

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

$curl -o ~/.claude/skills/configuring-oauth2-authorization-flow/SKILL.md --create-dirs "https://raw.githubusercontent.com/killvxk/cybersecurity-skills-zh/main/skills/configuring-oauth2-authorization-flow/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/configuring-oauth2-authorization-flow/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How configuring-oauth2-authorization-flow Compares

Feature / Agentconfiguring-oauth2-authorization-flowStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/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

9
from killvxk/cybersecurity-skills-zh

测试 OAuth 2.0 和 OpenID Connect 实现中的安全缺陷,包括授权码拦截、重定向 URI 操控、OAuth 流程中的 CSRF、令牌泄露、权限范围(scope)提升以及 PKCE 绕过。测试人员对授权服务器、客户端应用及令牌处理进行评估,发现可导致账户接管或未授权访问的常见错误配置。适用于 OAuth 安全测试、OIDC 漏洞评估、OAuth2 重定向绕过或授权码流程测试相关请求。

testing-api-for-broken-object-level-authorization

9
from killvxk/cybersecurity-skills-zh

测试REST和GraphQL API中的越权对象访问(BOLA/IDOR)漏洞,即已认证用户通过操纵API请求中的对象标识符 来访问或修改属于其他用户的资源。测试人员拦截API调用,识别对象ID参数(数字ID、UUID、slug), 并系统性地替换为其他用户的ID,以确定服务器是否执行了对象级授权。 对应OWASP API安全Top 10 2023 API1(越权对象访问)。

securing-github-actions-workflows

9
from killvxk/cybersecurity-skills-zh

本技能涵盖加固 GitHub Actions 工作流以防范供应链攻击、凭据盗窃和权限提升。 内容包括将 action 固定到 SHA 摘要、最小化 GITHUB_TOKEN 权限、防止机密泄露、 防止工作流表达式中的脚本注入,以及为工作流变更实施必要的审阅者机制。

implementing-patch-management-workflow

9
from killvxk/cybersecurity-skills-zh

补丁管理(Patch Management)是识别、测试、部署和验证软件更新以修复组织 IT 基础设施漏洞的系统化流程。有效的补丁管理工作流通过结构化测试、审批门禁和分阶段发布,在降低攻击面的同时将运营中断降至最低。

exploiting-broken-function-level-authorization

9
from killvxk/cybersecurity-skills-zh

测试 API 的函数级授权破坏(BFLA)漏洞,即普通用户可以通过直接调用来执行管理功能或访问特权 API 端点。测试人员识别管理员和特权端点,然后通过操纵 HTTP 方法、URL 路径和请求参数尝试使用普通用户凭据访问这些端点。对应 OWASP API5:2023 函数级授权破坏。适用于 BFLA 测试、管理员端点绕过、函数级访问控制测试或 API 权限提升等请求场景。

detecting-broken-object-property-level-authorization

9
from killvxk/cybersecurity-skills-zh

检测和测试OWASP API3:2023对象属性级授权失效(BOPLA)漏洞,包括过度数据暴露和批量赋值攻击。

configuring-zscaler-private-access-for-ztna

9
from killvxk/cybersecurity-skills-zh

配置 Zscaler Private Access(ZPA),通过部署 App Connector、定义应用程序段、 基于用户身份和设备态势配置访问策略以及与 IdP 集成,以零信任网络访问取代传统 VPN。

configuring-windows-event-logging-for-detection

9
from killvxk/cybersecurity-skills-zh

配置 Windows 事件日志与高级审计策略,以生成高质量安全事件用于威胁检测和取证调查。 适用于为登录事件、进程创建、权限使用和对象访问启用审计策略,以支撑 SIEM 检测规则的场景。

configuring-windows-defender-advanced-settings

9
from killvxk/cybersecurity-skills-zh

配置 Microsoft Defender for Endpoint(MDE)高级防护设置,包括攻击面缩减规则、受控文件夹访问、 网络保护和漏洞利用防护。适用于在默认 Defender 设置基础上加固 Windows 端点、部署企业级端点防护 或满足高级恶意软件防御合规要求的场景。

configuring-tls-1-3-for-secure-communications

9
from killvxk/cybersecurity-skills-zh

TLS 1.3(RFC 8446)是传输层安全协议的最新版本,在安全性和性能方面相比 TLS 1.2 有显著改进,将握手延迟降低至 1-RTT,移除了过时的密码套件并强制要求完美前向保密。

configuring-suricata-for-network-monitoring

9
from killvxk/cybersecurity-skills-zh

部署和配置 Suricata IDS/IPS,使用 Emerging Threats 规则集、EVE JSON 日志记录和自定义规则, 进行实时网络流量检测(intrusion detection)、威胁检测,并与 SIEM 平台集成实现集中化安全监控。

configuring-snort-ids-for-intrusion-detection

9
from killvxk/cybersecurity-skills-zh

安装、配置和调优 Snort 3 入侵检测系统(intrusion detection system),使用自定义和社区规则集、 预处理器和告警输出插件,在授权网络分段上监控网络流量中的恶意活动。