Používam tento kód na pripojenie k serveru tretej strany.
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
}
}
Server tretej strany je zariadenie a nedávno zapli funkciu NTLM. Počnúc zapnutím NTLM, moja požiadavka teraz získala chybu chyby HTTP 500 takto:
type Výkaz správy o výnimke NTLM zadaný. Znížený na Basic Auth (a / alebo SSL), ale downgrade nie je podporovaný. popis Server vyskytla interná chyba, ktorá jej zabránila splniť túto požiadavku Požiadavka. výnimka java.lang.UnsupportedOperationException: NTLM špecifikované. Znížený na Basic Auth (a / alebo SSL), ale nie downgrade podporované. net.sourceforge.spnego.SpnegoProvider.negotiate (SpnegoProvider.java:146) net.sourceforge.spnego.SpnegoAuthenticator.authenticate (SpnegoAuthenticator.java:271) net.sourceforge.spnego.SpnegoHttpFilter.doFilter (SpnegoHttpFilter.java:229)
I "m za predpokladu, že môj httpclient vidí, že server teraz podporuje NTLM a snaží sa robiť NTLM. Existuje nejaký spôsob, ako povedať svojmu httpclientu, aby sa ani neobťažoval s NTLM?"
odpovede:
0 pre odpoveď č. 1Ak chcete zakázať protokol NTLM, vyskúšajte toto:
var modules = AuthenticationManager.RegisteredModules;
while (modules.MoveNext())
{
var module = (IAuthenticationModule) modules.Current;
if (module.AuthenticationType == "NTLM")
{
AuthenticationManager.Unregister(module);
break;
}
}