我使用此代码连接到第三方服务器。
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。降级为基本 Auth(和/或SSL)但不支持降级。 description服务器 遇到内部错误,导致无法完成此操作 请求。异常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?
答案 0 :(得分:0)
要禁用NTLM,请尝试以下操作:
var modules = AuthenticationManager.RegisteredModules;
while (modules.MoveNext())
{
var module = (IAuthenticationModule) modules.Current;
if (module.AuthenticationType == "NTLM")
{
AuthenticationManager.Unregister(module);
break;
}
}