调用在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
http://www.innovation.ch/personal/ronald/ntlm.html
NTLM是可以进行域单点的一种协议,而JCISF可以作为实现库
http://www.cnblogs.com/adylee/archive/2007/11/28/975213.html
时间: 2025-01-18 10:05:41