核心中的 NTLM 身份验证 HttpClient

Posted

技术标签:

【中文标题】核心中的 NTLM 身份验证 HttpClient【英文标题】:NTLM authentication HttpClient in Core 【发布时间】:2018-05-29 02:28:22 【问题描述】:

我正在尝试使用 HttpClient 访问需要 NTLM 身份验证的 REST 服务。但是我不断收到 401 Unauthorized。 我的代码是这样的

    private static void Main()
    
        var uri = new Uri("http://localhost:15001");
        var credentialsCache = new CredentialCache   uri, "NTLM", CredentialCache.DefaultNetworkCredentials  ;
        var handler = new HttpClientHandler  Credentials = credentialsCache ;
        var httpClient = new HttpClient(handler)  BaseAddress = uri, Timeout = new TimeSpan(0, 0, 10) ;
        httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
        var response = httpClient.GetAsync("api/MyMethod").Result;
    

我的目标框架是 netcoreapp2.0。如果我更改为 net461,它将起作用。不知道我做错了什么?

【问题讨论】:

看看这个:github.com/dotnet/corefx/issues/9234 非常感谢您的提问 - 它帮助我们在 .Net 上实施 NTLM 请求 【参考方案1】:

Microsoft 已将此视为错误。可能会在核心 2.1 中发布修复

https://github.com/dotnet/corefx/issues/25988

【讨论】:

以上是关于核心中的 NTLM 身份验证 HttpClient的主要内容,如果未能解决你的问题,请参考以下文章

HttpClient 4.1.1 在使用 NTLM 进行身份验证时返回 401,浏览器工作正常

.NET HttpClient 在使用 NTLM 协商时不会在对 IIS 的请求之间保持身份验证

Python 中的 NTLM 身份验证

ZAP 中的 NTLM 身份验证

如何支持 NTLM 身份验证并回退到 ASP.NET MVC 中的表单?

NTLM认证流程详解