AzureADB2C NextJS 13隐式流配置问题:AADB2C90057错误求助
解决AADB2C90057隐式流配置报错问题
核心问题分析
你代码里同时启用了PKCE校验和隐式流(response_type: id_token),这两者完全不兼容。PKCE是专门为授权码流设计的安全机制,隐式流不需要也不支持PKCE,这种混合配置会导致Azure AD B2C判定你的请求不符合已配置的流规则,从而抛出AADB2C90057错误。
具体修改步骤
- 移除PKCE校验配置:直接删掉
checks: ["pkce"]这一行,隐式流不需要该校验。 - 清理不必要的client配置:
token_endpoint_auth_method: "none"是针对无客户端密钥的纯前端应用场景,如果你是带后端的Next.js应用,这个配置可以直接移除;如果是纯前端,保留也没问题,但核心还是要先解决PKCE的冲突。 - 确认授权参数合理性:
response_mode: "query"在隐式流中是合法的,resource参数要确保对应的API权限已经正确授予给你的B2C应用。
修改后的代码示例:
AzureADB2CProvider({ id: "azureadb2c", clientId: process.env.AZUREADB2C_CLIENT_ID || "", clientSecret: process.env.AZUREADB2C_SECRET || "", tenantId: process.env.AZUREADB2C_TENANT_NAME || "", primaryUserFlow: "B2C_1_xxxxx", authorization: { params: { scope: "openid", response_type: "id_token", response_mode: "query", resource: "https://xxxxxxx.onmicrosoft.com/1111111-1111-1111-1111-57911111114/publicInfo.Read", }, }, }),
额外检查点
- 确认你的B2C用户流(B2C_1_xxxxx)里已经开启了隐式流,而不只是应用清单里的全局设置。
- 修改应用清单后,等待1-2分钟让配置同步,有时候Azure的配置不会立即生效。
- 从安全角度考虑,服务器端应用更推荐使用授权码流(把
response_type改成code,保留checks: ["pkce"]),同时在B2C应用里启用授权码流,这比隐式流更安全。
内容的提问来源于stack exchange,提问作者Rafat Sarosh
相关产品推荐
相关产品推荐

