了解HttpClient和Windows身份验证

时间:2018-01-29 21:48:49

标签: c# asp.net authentication iis

我在将.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;
        }

    }

0 个答案:

没有答案