PKCE(Proof Key for Code Exchange)是 OAuth 授权码流程的扩展,用于降低授权码被截获后遭他人兑换令牌的风险。其协议由 RFC 7636定义。
工作过程
客户端生成随机的 code_verifier,在授权请求中发送由它得到的 code_challenge。兑换授权码时再提交原始 verifier,由授权服务器验证两次请求之间的绑定。
采用 S256 方法时,challenge 是 verifier 经 SHA-256 处理并进行规定编码的结果。截获授权码的一方若没有 verifier,就不能通过相应检查。PKCE 解决授权码兑换的绑定问题,并不代替整个 OAuth 流程的其他要求。