簡體   English   中英

c#httpclient-禁用ntlm

[英]c# httpclient - disable ntlm

我正在使用此代碼連接到第三方服務器。

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,請嘗試以下操作:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM