1. OAuth 2.0 授权码流程 + PKCE(RFC 7636)防止授权码拦截的工程机制?
OAuth 2.0 授权码流程 + PKCE(RFC 7636)防止授权码拦截的工程机制是什么?
- 授权码流程
- PKCE 的 code_verifier/code_challenge
- 授权码拦截防御
OAuth 2.0 授权码流程:客户端引导用户授权,授权服务器返回授权码,客户端用授权码 + client_secret 兑换 token。PKCE(RFC 7636)在不依赖 client_secret 的情况下防止授权码拦截:客户端先生成随机 code_verifier,计算 code_challenge(S256 哈希或 plain)随授权请求发送;换 token 时附上 code_verifier,授权服务器校验 code_challenge 与 code_verifier 匹配。若授权码被拦截,拦截者没有 code_verifier,无法兑换 token。工程机制上,即使 attacker 拿到授权码,缺少 verifier 就无法完成兑换,从而防御授权码拦截。
PKCE 把"授权码与请求者绑定"作为防护核心。对公共客户端(无 secret)是必需,对机密客户端也是深度防御。OAuth 2.1 强制要求 PKCE。