背景与价值OAuth 2.1推荐禁用Implicit与强制PKCE。短期令牌与旋转策略可降低泄露面并提升安全。统一规范禁用Implicit:不接受 `response_type=token` 与混合模式。强制PKCE:仅允许 `S256` 且校验 `code_verifier`。短期令牌:`access_token` 期限≤900秒,支持刷新旋转。核心实现授权参数校验type Params = { response_type: string; code_challenge_method: string; code_verifier: string } function validVerifier(v: string): boolean { return /^[A-Za-z0-9\-\._~]{43,128}$/.test(v) } function oauth21Ok(p: Params): boolean { if (p.response_type.toLowerCase().includes('token')) return false if (p.code_challenge_method !== 'S256') return false if (!validVerifier(p.code_verifier)) return false return true } 令牌期限校验type Token = { access_token: string; expires_in: number } function tokenOk(t: Token): boolean { return typeof t.access_token === 'string' && Number.isInteger(t.expires_in) && t.expires_in > 0 && t.expires_in <= 900 } 落地建议在授权端拒绝Implicit与混合模式,强制PKCE S256并校验 `code_verifier`。下发短期 `access_token` 并配合刷新令牌旋转与撤销治理。验证清单`response_type` 是否排除 `token`;`code_challenge_method` 是否为 `S256`;令牌期限是否≤900秒。

发表评论 取消回复