5

我有一个使用 ASP.NET MVC4 构建的 WebAPI。它是一个用于获取数据的简单 API(简单的 HTTP GET 请求)。该 API 是稳定的,并且已经与我们的移动 (MonoTouch) 应用程序一起使用了相当长的一段时间。现在我们将 ForeFront UAG 放在 API 前面(只需将 web.config 更改为使用 windows auth。通过浏览器(例如 Chrome)测试安全性和 API,并显示 UAG 登录名(第一次点击 API 时)。输入您的凭据,然后您为 API GET 请求取回数据。所有您所期望的。现在,从 .NET 代码(无浏览器)我想做同样的事情。我已经看到以编程方式访问 SharePoint 和一些窗口的示例电话的东西,但它们似乎都不适用于来自常规旧 .NET 代码(我最终将在 MonoTouch 中使用)的 ASP.NET MVC4 WebApi 调用。

任何人都有一个如何验证然后通过 UAG 成功向 ASP.NET MVC4 WebApi 发出 HTTP GET 请求的示例?

4

1 回答 1

0

我没有 ForeFront UAG 的处置权,所以我无法对此进行测试。但总的来说,您有几个选择。示例是片段,为了便于阅读,省略了一些代码。

WebClient / HttpWebRquest

CredentialCache credentials = new CredentialCache();
credentials.Add(new Uri(url), "NTLM", new NetworkCredential(userName, password, domain));

//WebClient
var webClient = new WebClient();
webClient.Credentials = credentials;

//HttpWebRequest
var request = HttpWebRequest.Create(url);
request.Credentials = credentials

HttpClient

WebRequestHandler clientHandler = new WebRequestHandler();
clientHandler.UseDefaultCredentials = true;
clientHandler.AllowPipelining = true;
clientHandler.ImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;

ProgressMessageHandler progress = new ProgressMessageHandler();

httpClient = HttpClientFactory.Create(clientHandler, progress);

您还可以选择使用第三方库来完成这项工作,例如RestSharpService Stack。我个人使用 RestSharp 是因为它易于使用和序列化/反序列化功能。

于 2013-05-11T18:01:21.907 回答