AADSTS50194报错:单租户Azure AD应用不支持/common端点问题
问题根因
触发AADSTS50194错误有两个核心配置问题:
- 你只修改了令牌兑换阶段
ConfidentialClientApplication的Authority配置,但OpenIdConnect认证中间件的授权请求端点仍然硬编码了多租户专用的/common路径,这是报错的直接原因。用户输入凭据后,AAD收到发往/common端点的单租户应用授权请求,会直接拦截返回错误,根本走不到后面的令牌兑换逻辑。 - 全局定义的
Authority变量域名配置错误,你写的https://graph.microsoft.com/是微软Graph资源接口地址,不是AAD身份认证的权威端点,就算走到令牌兑换阶段,用这个地址也无法正常获取令牌。
修复步骤
- 修正全局Authority变量的取值,使用AAD认证域名拼接租户ID,替换原来错误的Graph域名配置:
// 修正后:使用AAD认证端点格式,v2.0版本和原有配置对齐 public static string Authority = $"https://login.microsoftonline.com/{tenantId}/v2.0";
- 替换OpenIdConnect中间件里硬编码的/common端点,引用正确的单租户Authority配置,同时补充单租户场景下的颁发者校验参数,避免验签失败:
app.UseOpenIdConnectAuthentication( new OpenIdConnectAuthenticationOptions { ClientId = appId, // 替换原硬编码的"https://login.microsoftonline.com/common/v2.0" Authority = Authority, Scope = $"openid email profile offline_access {graphScopes}", RedirectUri = redirectUri, PostLogoutRedirectUri = redirectUri, TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, // 显式指定单租户合法颁发者,减少验签异常 ValidIssuer = Authority }, Notifications = new OpenIdConnectAuthenticationNotifications { AuthenticationFailed = OnAuthenticationFailedAsync, AuthorizationCodeReceived = OnAuthorizationCodeReceivedAsync } } );
- 配置校验(全程保持单租户架构,无需修改应用为多租户模式):
- 登录Azure AD应用注册页,确认当前应用的「支持的账户类型」选中的是「仅此组织目录中的账户」单租户选项
- 确认
PrivateSettings.config中存储的ida:tenantId为当前AAD租户的GUID格式ID,不要用租户名称拼写,避免取值错误 - 确认配置文件中的
ida:RedirectUri和Azure AD应用注册页配置的重定向URI完全一致,包括端口、路径,无尾斜杠等格式差异
修改完成后重启应用,授权流程会全程走租户专属端点,不会再触发/common端点相关的报错。
内容的提问来源于stack exchange,提问作者Psychonaut007
相关产品推荐
相关产品推荐

