【问题标题】:c# httpclient - disable ntlm时间:2019-04-10 标签:c#httpclient-禁用ntlm
【发布时间】:2017-09-27 12:51:21
【问题描述】:

我正在使用此代码连接到第三方服务器。

using (HttpClientHandler httpClientHandler = new HttpClientHandler())
{
    httpClientHandler.AllowAutoRedirect = false;
    httpClientHandler.Credentials = new NetworkCredential(login, password);
    using (HttpClient authClient = new HttpClient(httpClientHandler))
    {
        response = await authClient.GetAsync(authenticationUrl).ConfigureAwait(false);
        ... response processing here
    }
}

第三方服务器是一个设备,他们最近启用了 NTLM。从开启 NTLM 开始,我的请求现在收到如下 HTTP 500 错误错误:

类型异常报告消息 NTLM 指定。降级为基本 身份验证(和/或 SSL),但不支持降级。描述 服务器 遇到一个内部错误,阻止它完成这个 要求。异常 java.lang.UnsupportedOperationException: NTLM 指定的。降级到基本身份验证(和/或 SSL),但不降级 支持的。 net.sourceforge.spnego.SpnegoProvider.negotiate(SpnegoProvider.java:146) net.sourceforge.spnego.SpnegoAuthenticator.authenticate(SpnegoAuthenticator.java:271) net.sourceforge.spnego.SpnegoHttpFilter.doFilter(SpnegoHttpFilter.java:229)

我假设我的 httpclient 看到服务器现在支持 NTLM 并尝试执行 NTLM。有什么方法可以告诉我的 httpclient 甚至不用理会 NTLM?

【问题讨论】:

  • 我认为问题在于服务器只支持NTLM。客户端请求服务器上的资源,服务器回复说需要 NTLM 授权,您的客户端回复说它不能做 NTLM,那么 Basic 怎么样?服务器说“对不起”并关闭了连接。所以我看到的答案是你不能不打扰 NTLM,因为服务器正在要求它。
  • 这很可能是..有没有办法在不将 Fiddler 置于其间的情况下进行追踪(他们在生产环境中对此不屑一顾)?我只是想确保最终我可以确保我的客户甚至不会费心尝试使用 NTLM,但我还没有找到方法。类似于您可以启用/禁用对 SSL/TLS 版本的支持。
  • 我觉得奇怪的是他们抱怨在生产环境中使用 Fiddler,因为它在客户端上运行。我经常使用的一个选项是 Burp Suite,它在您的客户端计算机上充当代理。您可以准确捕获和跟踪客户端和服务器之间发送的内容。您也可以自己滚动,因为它只是一个 TCP 事务,只需建立 TCP 连接并自己进行读写。或者对于真正喜欢冒险的人,使用 Telnet。

标签: c# dotnet-httpclient ntlm-authentication


【解决方案1】:

要禁用 NTLM,试试这个:

        var modules = AuthenticationManager.RegisteredModules;
        while (modules.MoveNext())
        {
            var module = (IAuthenticationModule) modules.Current;
            if (module.AuthenticationType == "NTLM")
            {
                AuthenticationManager.Unregister(module);
                break; 
            }
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-19
    • 2022-01-16
    • 2018-07-04
    • 2019-06-02
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    • 2015-02-10
    相关资源
    最近更新 更多