Azure AD B2C的PKCE认证流问题:提供的code_verifier无效
解决Azure AD B2C PKCE流程中AADB2C90183错误的排查步骤
以下是针对你遇到的AADB2C90183: The supplied code_verifier is invalid错误的具体排查和解决方向:
检查code_verifier的格式合规性
code_verifier必须满足:长度在43-128字符范围内,仅包含字母、数字,以及-._~这三个特殊字符。确认你生成的verifier没有超出长度限制,也没有包含其他非法字符。验证code_challenge的生成逻辑正确性
使用S256方法时,生成流程必须是:- 生成符合规则的code_verifier
- 对code_verifier计算SHA256哈希值
- 对哈希结果做Base64URL编码(替换
+为-、/为_,移除末尾的=符号)
绝对不能直接对code_verifier做Base64编码,必须经过SHA256哈希这一步。
保证verifier与challenge的配对一致性
每个授权请求的code_challenge必须对应唯一的code_verifier,不能跨会话混用。比如用challengeA发起授权拿到code后,必须用生成challengeA的那个verifierA去请求令牌,不能用其他会话生成的verifierB。核对令牌请求的参数
向令牌端点请求时,必须正确传递以下参数(无需client_secret):grant_type=authorization_code code=获取到的授权code redirect_uri=与授权请求完全一致的回调地址 client_id=你的应用ID code_verifier=对应授权请求中challenge的原verifier检查参数拼写是否正确,比如别把
code_verifier写成code_verify。确认应用注册的公共客户端配置
登录Azure AD B2C后台,找到你的应用注册,进入"身份验证"页面,在高级设置里开启"允许公共客户端流"。PKCE属于公共客户端流程,这个开关未开启会导致验证失败。
内容的提问来源于stack exchange,提问作者inkerton123
相关产品推荐
相关产品推荐

