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

WPF应用在Windows Server 2016出现MsalServiceException认证取消报错求助

问题排查与修复方案

根因说明

该错误是Windows Server 2016系统的默认安全限制、MSAL版本兼容性、WAM Broker适配问题共同导致的,并非用户手动取消验证。

修复步骤

  • 第一步:关闭IE增强安全配置
    Windows Server系列默认开启的IE增强安全配置会拦截MSAL弹出的登录验证页面,直接终止验证流程:
    1. 打开服务器管理器,点击左侧「本地服务器」
    2. 在右侧属性面板找到「IE增强的安全配置」,分别将管理员、普通用户的配置改为「关闭」
    3. 重启应用重新测试
  • 第二步:禁用WAM Broker调用
    4.36.0版本的MSAL默认会调用Windows系统的Web Account Manager(WAM)完成验证,但Windows Server 2016的WAM功能不完整,不支持桌面端交互式验证场景,会直接返回取消错误。
    构造PublicClientApplication时显式关闭Broker:
    var app = PublicClientApplicationBuilder.Create("你的客户端ID")
        .WithAuthority("https://login.microsoftonline.com/你的租户ID")
        .WithBroker(false) // 禁用WAM Broker
        .WithRedirectUri("https://login.microsoftonline.com/common/oauth2/nativeclient")
        .Build();
    
    调用交互式验证时指定使用WebView:
    authResult = await app.AcquireTokenInteractive(scopes)
        .WithAccount(accounts.FirstOrDefault())
        .WithPrompt(Prompt.SelectAccount)
        .WithUseEmbeddedWebView(true) // 强制使用嵌入式IE内核浏览器,也可设为false调用系统默认浏览器
        .ExecuteAsync();
    
  • 第三步:升级MSAL依赖版本
    4.36.0是2021年发布的旧版本,后续版本修复了大量Server系统下的适配问题,直接将Microsoft.Identity.Client、Microsoft.Identity.Client.Desktop升级到最新的4.x稳定版即可。
  • 第四步:检查RDP会话与应用注册配置
    1. 若通过远程桌面访问虚拟机,检查组策略是否禁用了交互式弹窗:路径为「计算机配置>管理模板>Windows组件>远程桌面服务>远程桌面会话主机>远程会话环境」,关闭弹窗限制策略。
    2. 检查Azure AD应用注册的重定向URI配置,需添加**公用客户端(移动和桌面)**类型的两个地址:
      • https://login.microsoftonline.com/common/oauth2/nativeclient
      • msal{你的客户端ID}://auth

内容的提问来源于stack exchange,提问作者DineshDB

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 08:51:02