UWP 应用程序设置默认代理和默认 Windows 身份验证
Posted
技术标签:
【中文标题】UWP 应用程序设置默认代理和默认 Windows 身份验证【英文标题】:UWP Application setting default proxy with default windows authentication 【发布时间】:2022-01-09 17:15:05 【问题描述】:我有一个使用 Azure AD 登录的 UWP 应用。我将它部署到客户站点并且它停止登录。他们有一个带代理的网络,我无法访问他们的网络,所以我无法正确调试它。我提供的所有信息是:
有一个代理,您可能希望使用默认代理设置。代理需要默认的 windows 身份验证。
所以有了这些信息,这就是我尝试过的:
-
更新我的
PublicApplicationBuilder
以使用自定义HttpClientFactory
this.publicClientApp = PublicClientApplicationBuilder.Create(ClientId)
.WithAuthority(Authority)
.WithHttpClientFactory(new MsalHttpClientFactory())
.OtherNonRelevantMethods()
.Build();
-
我创建了
IMsalHttpClientFactory
的自定义实现,它尝试设置代理。有一个函数,GetHttpClient
,它应该设置(顾名思义)一个具有所有必要配置的 HttpClient
对象
private HttpClient GetHttpClient()
var handler = new HttpClientHandler();
handler.UseProxy = true;
handler.UseDefaultCredentials = true;
return new HttpClient(handler);
这似乎不起作用。这是我第一次尝试同时使用默认代理和默认 Windows 凭据。
我也尝试使用以下代码手动设置代理凭据
private HttpClient GetHttpClient()
var handler = new HttpClientHandler();
handler.UseProxy = true;
handler.DefaultProxyCredentials = CredentialCache.DefaultCredentials
return new HttpClient(handler);
但它似乎做同样的事情,因此不起作用。
最后我尝试从WebRequest
手动检索代理,从CredentialCache
手动检索凭据,但又一次......没有运气。
private HttpClient GetHttpClient()
var handler = new HttpClientHandler();
handler.UseProxy = true;
handler.Proxy = WebRequest.DefaultWebProxy;
handler.Proxy.Credentials = CredentialCache.DefaultCredentials;
return new HttpClient(handler);
不幸的是,我的想法已经用完了,我已经能够通过 Telerik Fiddler 运行它来完成这项工作,所以显然 Fiddler 可以很好地到达代理,当 Fiddler 作为中间人运行时,我的应用程序可以工作美好的。但我不能简单地要求他们每次都运行 fiddler 哈哈
你有什么想法吗?我错过了一些超级简单的东西吗?
谢谢
【问题讨论】:
【参考方案1】:恐怕代理在 UWP 平台上不起作用。请参考博客here。
对于这两个 API,代理设置会自动从 Internet Explorer/Microsoft Edge 设置中获取,并默认用于所有 HTTP 调用。即使用户通过代理连接到互联网,这也使应用程序能够自动运行。这两个 API 都没有提供为您的应用指定自定义代理的方法。但是,您可以通过将 HttpClientHandler.UseProxy 设置为 false(对于 System.Net.Http)或将 HttpBaseProtocolFilter.UseProxy 设置为 false(对于 Windows.Web.Http)来选择不使用默认代理。
所以我们现在不能对单个 HTTP 请求使用自定义代理。如果您确实想要这个,请随时使用 Windows 反馈中心应用发布您的功能请求。
【讨论】:
以上是关于UWP 应用程序设置默认代理和默认 Windows 身份验证的主要内容,如果未能解决你的问题,请参考以下文章
目前有办法修改 Windows 10 里面 UWP 程序的图标吗
Windows 10 UWP Javascript 应用下载权限