Skip to main content


PKCE, 全称Proof Key for Code Exchange, 微软翻译为保护授权代码授权。这其实是通过一种密码学手段确保恶意第三方即使截获Authorization Code或者其他密钥,也无法向认证服务器交换Access Token。

PKCE的流程大概如下:

  1. 随机生成一串字符并作URL-Safe的Base64编码处理, 结果用作code_verifier
  2. 将这串字符通过SHA256哈希,并用URL-Safe的Base64编码处理,结果用作code_challenge
  3. code_challenge带上,跳转认证服务器,获取Authorization Code
  4. code_verifier带上,换取Access Token

由于中间人不能由code_challenge逆推code_verifier,因此即使中间人截获了code_challenge, Authorization Code等,也无法换取Access Token, 避免了安全问题。



https://tools.ietf.org/html/rfc8252 - OAuth 2.0 for Native Apps
https://tools.ietf.org/html/rfc7636 - Proof Key for Code Exchange by OAuth Public Clients
https://juejin.im/entry/5b5955cbe51d45198f5c88fe - 为客户端而生的oauth2.0协议之pkce授权码模式