1

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

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?

4

1 回答 1

1

要禁用 NTLM,请尝试以下操作:

        var modules = AuthenticationManager.RegisteredModules;
        while (modules.MoveNext())
        {
            var module = (IAuthenticationModule) modules.Current;
            if (module.AuthenticationType == "NTLM")
            {
                AuthenticationManager.Unregister(module);
                break; 
            }
        }
于 2018-02-15T09:58:51.157 回答