OAuth Flow Architect 是一个面向开发者的技能,用于指导安全、正确地实现 OAuth 2.0 与 OpenID Connect(OIDC)认证流程。其内容围绕认证授权的核心概念、推荐流程、代码实现与安全注意事项展开。
用途 该技能帮助开发者理解并实现 OAuth 2.0 与 OIDC 认证。它先说明 OAuth 要解决的问题:在没有 OAuth 时,应用会直接接触用户凭据;使用 OAuth 后,应用不再看到用户密码,而是通过授权服务器获取令牌。随后介绍 OAuth 的四个角色:资源所有者(用户)、客户端(请求访问的应用)、授权服务器(颁发令牌,如 Google、Auth0)、资源服务器(托管受保护资源,如 Google API)。
主要能力 技能覆盖多种授权类型,并给出各自适用场景与安全等级:授权码 + PKCE(Web 应用、移动端、SPA,安全等级最高)、授权码(传统服务端应用,高)、客户端凭证(机器对机器,高)、刷新令牌(令牌续期,高),以及已弃用的隐式流程(旧式 SPA,低)和密码流程(旧式迁移,低)。
在 OIDC 方面,技能介绍 ID Token 的结构(JWT 声明,如 iss、sub、aud、exp、iat、nonce 及 profile 声明)、ID Token 校验(通过 JWKS 获取签名密钥,校验算法、受众、签发者与 nonce),以及 OIDC 发现(从 issuer 的 .well-known/openid-configuration 获取授权端点、令牌端点、UserInfo 端点、jwks_uri 等配置)。
使用方式 技能以代码示例展示实现方式。授权码 + PKCE 流程中,客户端生成 code_verifier 并计算 SHA256 的 code_challenge,构造授权 URL(含 response_type、client_id、redirect_uri、scope、state、code_challenge、code_challenge_method=S256),用户认证并同意后,用授权码和 code_verifier 在令牌端点换取令牌。回调处理需校验 state 以防 CSRF、检查错误参数、交换令牌、校验 ID Token 或获取 UserInfo,并清理 OAuth 状态。
令牌管理部分提供刷新令牌流程(在访问令牌过期前用 refresh_token 换取新令牌并保存)、令牌存储安全(使用 Fernet 加密 access_token 与 refresh_token,ID Token 因已签名无需加密,可存入 Redis 或数据库)。客户端凭证流程则用于无用户参与的机器对机器认证,并带令牌缓存与过期处理。
安全注意事项 技能强调重定向 URI 校验(生产环境要求精确匹配、必须 HTTPS,localhost 与 127.0.0.1 除外、不允许 fragment)以及使用 state 参数防止 CSRF。
适用场景 适用于 Web 应用、移动应用、单页应用的用户登录与授权,服务端应用的传统授权码流程,机器对机器的客户端凭证认证,以及需要 OIDC 身份层(ID Token、UserInfo、发现)的场景。
限制 资料未提供该技能的收费、价格、平台支持范围、具体效果或性能数据,这些信息暂未提供。