/ / c # httpclient - vypne ntlm - c #, dotnet-httpclient, ntlm-authentication

c # httpclient - zakázať ntlm - c #, dotnet-httpclient, ntlm-authentication

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ď č. 1

Ak 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;
}
}