PKCE, 全称Proof Key for Code Exchange, 微软翻译为保护授权代码授权。这其实是通过一种密码学手段确保恶意第三方即使截获Authorization Code或者其他密钥,也无法向认证服务器交换Access Token。
PKCE的流程大概如下:
code_verifier
code_challenge
code_challenge
带上,跳转认证服务器,获取Authorization Codecode_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授权码模式