我不断收到此错误消息: “AADB2C90057:所提供的应用程序未配置为允许‘OAuth’隐式流程。
不过,我查了一下清单,上面确实写着: “oauth2AllowIdTokenImplicitFlow”:true, “oauth2AllowImplicitFlow”:true,
旋转了很多天,任何帮助将不胜感激。
这是我的 [...nextauth].ts
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",
},
},
checks: ["pkce"],
client: {
token_endpoint_auth_method: "none",
},
}),
你有
+-----------------+ +-------------------+ +------------------+
| | | | | |
| Next.js App +------------> Azure AD B2C Auth +-----------> Token Generation |
| | OAuth2 | Implicit Flow | Tokens | |
+-----------------+ +-------------------+ +------------------+
问题可能是由于 Azure 门户中的配置与应用程序代码不匹配造成的。
因此,请仔细检查 Azure 门户中的 Azure AD B2C 设置。确保您的应用程序注册确实启用了“隐式授予和混合流”(有关说明,请参阅“手动配置 Azure Active Directory B2C 提供程序”)。
oauth2AllowIdTokenImplicitFlow
和 oauth2AllowImplicitFlow
的清单条目应设置为 true
。您已确认这一点,但可能值得重新访问门户以确保这些设置已保存并处于活动状态。
“
response_type
”的 id_token
用于隐式流,但由于您使用的是 pkce
,您可能还需要 code
响应类型。 PKCE(代码交换的证明密钥)通常与授权代码流程一起使用,而不是隐式流程。
确保您请求的范围与 Azure AD B2C 中配置的范围匹配。如果您有自定义范围,则需要在您的 B2C 租户中定义它们。
authorization
端点应该是根据您的B2C租户配置的正确URL。验证端点 URL。确认
tenantId
和
primaryUserFlow
根据您的 B2C 租户详细信息正确命名。检查 Azure AD B2C 设置中是否正确设置了 CORS,以允许来自 Next.js 应用程序域的请求。例如,请参阅“Azure AD B2C CORS 错误
resource
部分中的
authorization
参数应与 Azure AD B2C 应用程序设置中配置的应用程序 ID URI 匹配。