---
title: "OAuth 2.0 PKCE:SPA 的授权码最佳实践"
keywords:
- OAuth2
- PKCE
- 授权码
- SPA
- code_verifier
- code_challenge
description: "阐述 PKCE 在浏览器/移动端公共客户端中的作用与防护能力,结合授权码流程给出参数使用与安全注意事项。"
categories:
- 文章资讯
- 技术教程
---
概述
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 场景,与正文一致。

发表评论 取消回复