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

UWP应用配置默认代理与Windows身份验证解决Azure AD登录失败问题

解决方案

1. 配置UWP应用包清单的必备权限

这是UWP平台特有的配置,也是最容易遗漏的点,未开启对应权限时,即使代码层代理配置正确也无法读取系统凭据完成代理认证:

  • 打开项目中的Package.appxmanifest文件,切换到「功能」标签,勾选以下权限:
    • 企业身份验证(Enterprise Authentication):允许应用调用当前登录用户的Windows默认凭据完成网络资源、代理的身份验证
    • Internet(客户端):基础网络访问权限,确认已勾选
    • 若Azure AD端点为客户内网映射地址,额外勾选专用网络(客户端和服务器)

2. 调整IMsalHttpClientFactory实现适配UWP运行时

你之前的实现是.NET桌面平台的通用逻辑,UWP下的代理读取逻辑存在差异,按以下代码调整:

private HttpClient GetHttpClient()
{
    var handler = new HttpClientHandler
    {
        UseProxy = true,
        // 直接使用系统默认代理,无需手动赋值WebRequest.DefaultWebProxy,避免UWP下读取到无效配置
        DefaultProxyCredentials = CredentialCache.DefaultNetworkCredentials,
        // 关闭自动重定向,避免与MSAL内置的认证跳转逻辑冲突
        AllowAutoRedirect = false
    };
    return new HttpClient(handler, disposeHandler: true);
}

3. 显式指定MSAL使用系统WebView完成登录

MSAL在UWP平台下如果使用嵌入式WebView,不会继承系统代理配置与身份验证凭据,需显式指定使用系统WebView:

this.publicClientApp = PublicClientApplicationBuilder.Create(ClientId)
     .WithAuthority(Authority)
     .WithHttpClientFactory(new MsalHttpClientFactory())
     // 强制使用系统WebView,继承系统全局代理与认证配置
     .WithUseEmbeddedWebView(false)
     .OtherNonRelevantMethods()
     .Build();

4. 验证UWP回环限制影响

你观察到的「Fiddler运行时应用可以正常登录」的核心原因是:Fiddler启动时会自动为活跃UWP应用添加本地回环豁免,同时Fiddler会作为中间层主动完成代理的Windows身份验证,无需应用自己处理认证逻辑。
如果客户环境使用了本地回环类代理配置,可以手动为应用添加回环豁免验证:

  1. 打开Package.appxmanifest的「打包」标签,复制包家族名称
  2. 以管理员身份运行PowerShell,执行命令:
    CheckNetIsolation.exe LoopbackExempt -a -n="替换为你的应用包家族名称"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 12:06:07