2015-04-24 114 views
1

我們有認證基於NTLM身份驗證部署在IIS服務器的Web服務。與HTTP客戶端彈簧安置模板NTLM身份驗證

當我嘗試通過httpCleint UserNamePasswordCredentials通過用戶名和密碼來訪問Web服務,我得到警告視爲

NTLM authentication error: Credentials cannot be used for NTLM authentication: org.apache.http.auth.UsernamePasswordCredentials 

請說明如何將用戶的HTTP客戶端與彈簧安置模板,用戶通過NTLM身份驗證名稱和密碼。

注:雖然我得到的警告信息,我也越來越響應。

+0

就忽略它。出於某種原因,「HttpClient」在協商時發出警告(因爲它應該是info)會記錄失敗。 –

+0

@ M.Denium有沒有什麼辦法,以在提供的HTTPClient有效的NTLM憑據(用戶名和PWD)和爲什麼你需要的是,你的狀態,你得到的響應使用了彈簧安置模板 –

+0

,因此另一種機制(基本例如) 工作中。事實上,您收到警告意味着協商失敗(檢查響應以檢測它支持哪些機制,可能NTLM是第一個,基本第二個)。 –

回答

1

只需定義下面的類。

public class NtlmAuthenticator extends Authenticator { 

     private final String username; 
     private final char[] password; 

     public NtlmAuthenticator(final String username, final String password) { 
      super(); 
      this.username = username; 
      this.password = password.toCharArray(); 
     } 

     @Override 
     public PasswordAuthentication getPasswordAuthentication() { 
      return (new PasswordAuthentication(username, password)); 
     } 
    } 

然後添加下面的代碼,說明它開始工作。

NtlmAuthenticator authenticator = new NtlmAuthenticator(userName, 
        password); 
      Authenticator.setDefault(authenticator);