PKCE

PKCE(发音为"pixie" )是 OAuth 授权码流程的扩展,适用于无法保守秘密信息的客户端,例如单页应用和移动应用。它将授权码绑定到请求该授权码的客户端,因此即使拦截了返回的授权码,也无法将其兑换为令牌。

工作原理

在重定向用户之前,客户端会生成一个随机的验证码(code_verifier),并将该验证码的 SHA-256 哈希值(即挑战码,code_challenge)随授权请求一起发送。之后,当客户端将该验证码兑换为令牌时,它会发送原始的验证码。服务器会对该验证码进行哈希处理,并将其与存储的挑战码进行比较,只有当两者匹配时才会颁发令牌。

误解

PKCE 仅适用于移动应用。目前的 OAuth 安全指南建议所有使用授权码流程的客户端(包括机密服务器端授权码)都应采用 PKCE,因为它还能有效防御授权码注入攻击。

点击这里试试

现代身份 API 实现了真正的 S256 PKCE:使用 codeChallenge 向/identity/v1/authorize发送 POST 请求,然后使用 codeVerifier 向/identity/v1/token发送 POST 请求——如果验证器与挑战不匹配,则会被拒绝,并返回 400 invalid_grant。

资料来源

其他术语

阅读英文版

所有术语 · 测试技巧 · 全部 39 个模拟 REST API

最后更新时间