调用在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: est",
"-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是可以进行域单点的1种协议,而JCISF可以作为实现库
http://www.cnblogs.com/adylee/archive/2007/11/28/975213.html