概述PKCE(Proof Key for Code Exchange,RFC 7636)通过 `code_verifier/code_challenge` 防止授权码拦截攻击,适用于无法安全保存客户端密钥的公共客户端(SPA/原生应用)。流程与参数在授权请求中携带 `code_challenge`(通常为 `S256`)与 `code_challenge_method`。在令牌请求中携带原始 `code_verifier`,服务端校验其与 `code_challenge` 的映射,防止拦截者仅凭授权码换取令牌[参考3,4]。最佳实践SPA 等公共客户端采用“授权码 + PKCE”,避免隐式模式;后端交换令牌时仍可配合客户端认证(如机密客户端)。使用 `S256` 而非 `plain`;随机高熵 `code_verifier`;校验 `redirect_uri` 严格匹配。参考与验证[参考1]OAuth 中文站:PKCE 适用性与防授权码注入说明:https://oauth.ac.cn/2/pkce/[参考2]技术文章:OAuth2 授权码流程与 Auth0 流程图参考:https://jiajunhuang.com/articles/2022_10_08-oauth2_explained.md.html[参考3]博客园:PKCE 扩展与参数解释(code_challenge/code_verifier):https://www.cnblogs.com/myshowtime/p/15555538.html[参考4]Auth0:授权码 + PKCE 流最佳实践与说明:https://auth0.com/docs/get-started/authentication-and-authorization-flow/authorization-code-flow-with-pkce关键词校验关键词覆盖 OAuth2/PKCE/授权码 与 SPA 场景,与正文一致。

发表评论 取消回复