原理分析
上面我们说了授权码拦截攻击 , 它是指在整个授权流程中 , 只需要拦截到从授权服务器回调给客户端的授权码code , 就可以去授权服务器申请令牌了 , 因为客户端是公开的 , 就算有密钥client_secret也是形同虚设 , 恶意程序拿到访问令牌后 , 就可以光明正大的请求资源服务器了 。
PKCE是怎么做的呢? 既然固定的client_secret是不安全的 , 那就每次请求生成一个随机的密钥(code_verifier) , 第一次请求到授权服务器的authorize endpoint时 ,携带code_challenge 和 code_challenge_method , 也就是code_verifier转换后的值和转换方法 , 然后授权服务器需要把这两个参数缓存起来 , 第二次请求到token endpoint时 , 携带生成的随机密钥的原始值 (code_verifier), 然后授权服务器使用下面的方法进行验证:
- plain
- S256 code_challenge = BASE64URL-ENCODE(SHA256(ASCII(code_verifier)))
最后看一下请求参数的示例:
下边使用Postman演示了使用PKCE模式的授权过程 。

文章图片
参考文献
- https://www.rfc-editor.org/rfc/rfc6749
推荐阅读
- 平板|MIUI 13推出无字模式,内测机型名单公布
- 模式|荣耀60和iQOO Neo5S,全面对比告诉你谁更值得买
- 显示器|华光昱能知识--DP2.0跟DP1.4有那些不一样?
- 产品|数梦工场通过CMMI V2.0 L5评估,再获全球软件领域最高级别认证加冕
- 商汤|商汤终成AI第一股:挂牌联交所后股价高开 业内人士更关注其盈利和商业模式
- 启发|小米 MIUI 13 无字模式开启内测,去除桌面应用名称显示
- 量子|百度量子平台2.0重磅发布!推动构建量子计算领域繁荣生态
- 智能|AGV新一代模式开启,AGV+你有听说过吗?
- 模式|“妈祖1.0”发布,我国自研海洋环流数值模式处于“领跑”地位
- 团队|俞敏洪首场助农直播带货,寻找新商业模式和老师转型方式