欢迎访问 内存溢出 —— 独立后端与系统工程技术博客

专注于分布式系统、Linux内核、数据库存储与后端工程实践

API 身份认证体系:OAuth 2.1 PKCE 授权码模式防御截获

发表于:|最后更新:|分类:应用安全|阅读:865 次

在移动客户端或单页应用(SPA)等公开客户端(Public Client)中,Client Secret 极易发生泄露。OAuth 2.1 强制所有授权码模式都必须结合 PKCE(Proof Key for Code Exchange),以抵御授权码拦截攻击。

一、PKCE 代码交换验证逻辑

python
import hashlib
import base64

# 客户端生成 code_verifier 与 code_challenge
code_verifier = "dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk"
code_challenge = base64.urlsafe_b64encode(
    hashlib.sha256(code_verifier.encode()).digest()
).decode().rstrip("=")

# 认证服务校验规则
def verify_pkce(received_verifier, stored_challenge):
    digest = hashlib.sha256(received_verifier.encode()).digest()
    computed_challenge = base64.urlsafe_b64encode(digest).decode().rstrip("=")
    return computed_challenge == stored_challenge