利用jcifs進行NTLM協議認證,生成ws訪問客戶端


調用在windows server 2012 的IIS上部署的webservice服務需要進行NTLM協議認證,爲了能正常利用cxf生成客戶端,首要解決的是需要windows NT authentication,可以採用早前的開源庫jcifs。

<span style="font-size:14px;">public static void main(String[] args) {
		  Config.registerSmbURLHandler();
	      String domain = "domain";
	      String user = "username";
	      String password = "password";
	      Config.setProperty("jcifs.smb.client.domain", domain);
	      Config.setProperty("jcifs.smb.client.username", user);
	      Config.setProperty("jcifs.smb.client.password", password);
	      try {
	          Config.setProperty("jcifs.netbios.hostname",
	                  Config.getProperty("jcifs.netbios.hostname",
	                          InetAddress.getLocalHost().getHostName()));
	          
	          org.apache.cxf.tools.wsdlto.WSDLToJava.main(
	        		  new String[]{
	        		  "-p",
	        		  "com.test",
	        		  "-d",
	        		  "c:\\test",
	        		  "-client",
	        		  "http://test.com/ws?wsdl"
	        		  });
	          
	      } catch (Exception ex) { 
	    	  ex.printStackTrace();
	      }	
	}</span>

擴展
===
NTLM是NT LAN Manager的縮寫,這也說明了協議的來源。NTLM 是 Windows NT 早期版本的標準安全協議,Windows 2000 支持 NTLM 是爲了保持向後兼容早期SMB協議在網絡上傳輸明文口令。後來出現 LAN Manager Challenge/Response 驗證機制,簡稱LM,它是如此簡單以至很容易就被破解。微軟提出了WindowsNT挑戰/響應驗證機制,稱之爲NTLM。現在已經有了更新的NTLMv2以及Kerberos驗證體系。NTLM是windows早期安全協議,因向後兼容性而保留下來。NTLM是NT LAN Manager的縮寫,即NT LAN管理器

NTLM Authentication Scheme for HTTP

NTLM是可以進行域單點的一種協議,而JCISF可以作爲實現庫



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章