我在将.Net MVC Web应用程序的请求验证到.Net Core服务层时遇到一些困难。
这两个应用程序在同一网站下的同一IIS服务器上运行。 Web应用程序配置为Windows身份验证,但其目的是使用App Pool标识或其他任意AD帐户对服务层进行身份验证。我不希望将每个请求的基本身份验证凭据传递给服务层,也不希望经过身份验证的用户能够直接访问服务层控制器。
无论我做什么,网络应用似乎总是希望将服务层称为匿名用户。问题是如何将请求作为经过身份验证的Windows用户生成?
我正在使用HttpClient。我只使用HttpClient的异步方法也很重要 - 因为我已经读过async在不同的安全上下文下生成一个新线程。
来自网络应用的代码如下。
public class SvcClient
{
public SvcClient()
{
string path = System.Configuration.ConfigurationManager.AppSettings["SvcPath"];
Path = path;
}
private string Path { get; set; }
public HttpClient client = new HttpClient(new HttpClientHandler() { AllowAutoRedirect = true, UseDefaultCredentials = true });
public async Task<List<Stuff>> GetStuffAsync()
{
string route = "Stuff/List";
List<Stuff> stuff = null;
HttpResponseMessage response = await client.GetAsync(Path + route);
if (response.IsSuccessStatusCode)
{
stuff = await response.Content.ReadAsAsync<List<Stuff>>();
}
return stuff;
}
}