You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AzureADB2C NextJS 13隐式流配置问题:AADB2C90057错误求助

解决AADB2C90057隐式流配置报错问题

核心问题分析

你代码里同时启用了PKCE校验和隐式流(response_type: id_token),这两者完全不兼容。PKCE是专门为授权码流设计的安全机制,隐式流不需要也不支持PKCE,这种混合配置会导致Azure AD B2C判定你的请求不符合已配置的流规则,从而抛出AADB2C90057错误。

具体修改步骤

  1. 移除PKCE校验配置:直接删掉checks: ["pkce"]这一行,隐式流不需要该校验。
  2. 清理不必要的client配置:token_endpoint_auth_method: "none"是针对无客户端密钥的纯前端应用场景,如果你是带后端的Next.js应用,这个配置可以直接移除;如果是纯前端,保留也没问题,但核心还是要先解决PKCE的冲突。
  3. 确认授权参数合理性: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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 16:20:03