使用Microsoft Entra自定义注册用户流时如何解决AADB2C90011错误?
解决AADB2C90011 Client ID不匹配错误的方案
一、先排查基础配置问题(排除人为失误)
- 确认用户流(Policy)关联的应用Client ID与代码中使用的完全一致:
进入Entra管理中心,找到对应的用户流,查看「关联的应用程序」列表,确保当前使用的应用在列表内,且Client ID与代码里的ClientId参数完全匹配(注意大小写、连字符,避免复制错误)。 - 检查租户类型:
若使用B2C用户流,需确认应用注册在Entra ID B2C租户下,而非普通Entra ID租户(很多开发者会混淆两类租户)。 - 重定向URI完全匹配:
代码中指定的重定向URI必须与应用注册中添加的完全一致,包括协议(http/https)、端口号,VSTO插件场景下,避免依赖自动生成的URI,手动指定已注册的地址。
二、针对MSAL VB.NET的规避方案(假设为已知bug场景)
1. 显式指定租户ID与B2C授权端点
避免使用common通用端点,直接指定B2C租户ID与用户流授权地址,减少端点解析异常:
Dim pcaOptions As New PublicClientApplicationOptions() pcaOptions.ClientId = "你的应用Client ID" pcaOptions.TenantId = "你的B2C租户ID(如xxx.onmicrosoft.com)" pcaOptions.RedirectUri = "已注册的重定向URI" Dim pca = PublicClientApplicationBuilder.CreateWithApplicationOptions(pcaOptions) .WithB2CAuthority("https://你的租户名.b2clogin.com/tfp/你的租户名.onmicrosoft.com/你的用户流名称") .Build()
2. 强制手动指定重定向URI
不要依赖MSAL自动推断重定向URI,尤其是VSTO这类桌面插件场景,手动指定已在应用注册中配置的地址:
Dim pca = PublicClientApplicationBuilder.Create("你的Client ID") .WithB2CAuthority("https://你的租户名.b2clogin.com/tfp/你的租户名.onmicrosoft.com/B2C_1_signupsignin1") .WithRedirectUri("https://localhost:xxxx") ' 替换为你注册的自定义URI .Build()
3. 清理MSAL本地缓存
MSAL会缓存认证上下文,残留的旧Client ID或租户信息可能导致异常,清理缓存目录:
找到路径C:\Users\<你的用户名>\AppData\Local\.IdentityService,删除该目录下的相关文件后重新运行插件。
4. 升级MSAL至最新稳定版
若为已知未修复bug,升级Microsoft.Identity.Client NuGet包到最新稳定版,避免使用预览版本。
三、额外排查点
- 确认应用注册的API权限:已添加B2C相关权限且完成管理员同意(若需管理员权限的API)。
- 检查用户流状态:确保用户流处于「已启用」状态,未启用的用户流会导致认证异常。
内容的提问来源于stack exchange,提问作者Yogou
相关产品推荐
相关产品推荐

