4

有谁知道如何为 WebView 控件提供凭据(甚至更好 - 在特定域用户的上下文中运行 Windows 8 Metro 风格应用程序/WinRT 应用程序?)我尝试按照此处列出的 HttpClient + WebView 方法( http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/05e46a0a-e913-469d-a4a5-4a805dcf158a)但它仍然提示用户输入凭据,因为在返回的内容中有指向受保护的物品。

我有一个 NetworkCredential 对象,我非常想将它应用到每一个 HTTP 调用。

肯定有人以前做过这个吗?:)

4

2 回答 2

5

为了连接到公司网络上的站点,您必须在Package.appxmanifest中启用privateNetworkClientServer功能。您可以在 XML 中执行此操作,也可以在 Visual Studio 中双击文件并使用设计器(功能选项卡)。在 UI 中,它被称为“家庭或工作网络”。

现在您可以访问 Intranet,您可以导航到该站点,但系统会提示您提供凭据。如果您希望自动提供用户域身份(企业单点登录),您还需要启用企业身份验证功能。这在清单 UI 中称为“企业身份验证”。

从那里您应该能够使用 WebView 浏览到任何 Intranet 站点,而不必进行身份验证。如果您希望在 WebView 之外做一些事情,您应该查看以下文章和示例:

使用 WebAuthenticationBroker:

http://code.msdn.microsoft.com/windowsapps/Web-Authentication-d0485122

WebAuthenticationBroker 有一个名为UseCorporateNetwork的选项。请确保在按照上面的示例进行操作时使用它。

最后,如果您想对 Facebook 或 Flicr 等其他网站进行单点登录,请参阅以下示例:

http://msdn.microsoft.com/en-US/library/windows/apps/xaml/Hh465283

于 2012-08-01T22:02:57.630 回答
1

我遇到了同样的问题,但幸运的是找到了答案:) 这里的主要问题是 Windows 商店应用程序包含 2 个不同的 HttpClient

其中一个是我们从 c# 应用程序中知道的“经典”一个(自动使用),另一个是“新”HttpClient - 它与 WebView 连接:)

波纹管是两种类型: System.Net.Http.HttpClient(经典的一种) Windows.Web.Http.HttpClient(新的)

所以记得声明新的 One 并执行如下代码

var filter = new HttpBaseProtocolFilter();    
filter.ServerCredential = new Windows.Security.Credentials.PasswordCredential("http://website","login", "password");
            Windows.Web.Http.HttpClient client2 = new Windows.Web.Http.HttpClient(filter);
            var response = await client2.GetAsync(new Uri("http://website"));
 WebView.Source = new Uri("http://website");

现在请记住将登录名和密码更改为您要使用的凭据,并且网站是您要对其进行身份验证的站点。

从服务器获取响应很重要 - 这将使用户通过@服务器身份验证,因此下次您使用 webView 访问该站点时,您将通过身份验证

它适用于基本身份验证和 NTLM 身份验证

在这种情况下,请记住 关闭企业身份验证

希望它能帮助人们寻找这个问题的解决方案:)

于 2015-10-17T13:02:37.007 回答