Web API窗口身份验证以及SSL

时间:2016-05-31 20:42:34

标签: c# .net authentication ssl asp.net-web-api

我有一个配置为使用Windows身份验证的web api,因为我需要捕获web api中的当前用户我正在使用以下语句捕获它。

string user = RequestContext.Principal.Identity.Name;

以上行不捕获用户而是捕获DOMAIN \ machineName $,我认为这是来自客户端SSL证书,因为我使用域颁发的证书作为客户端证书。

客户来电如下。

using (WebRequestHandler handler = new WebRequestHandler())
{
    handler.UseDefaultCredentials = true;
    handler.ClientCertificates.Add(this.cert);
    handler.ServerCertificateValidationCallback += CertificateValidator.CertificateValidationCallback;
    using (HttpClient client = new HttpClient(handler))
    {
        client.BaseAddress = new Uri("https://test-VM/Request/");
        client.DefaultRequestHeaders.Accept.Clear();
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
        using (HttpResponseMessage response = await client.PostAsJsonAsync("api/CreateRequest", request))
        {
            if (response.IsSuccessStatusCode)
            {
                 return await response.Content.ReadAsAsync<long>();
            }
            else
            {
                 throw new HttpRequestException(response.Content.ReadAsStringAsync().Result);
            }
        }
    }
}

我希望如果我将UserDefaultCredentials属性设置为true,它将用于此目的,但看起来它已被证书覆盖。

有没有办法在使用SSL时捕获来电者用户名?

0 个答案:

没有答案