axis2客户端NTLM身份验证 [英] axis2 client NTLM authentication
问题描述
我有一个需要使用IIS进行Kerberos / NTLM身份验证的axis2(v1.5.3)客户端。我怎样才能做到这一点?这是我现在的代码,它失败了 401 - 未经授权
错误:
I have an axis2 (v1.5.3) client that needs to do Kerberos/NTLM authentication with IIS. How can I do this? This is the code I have right now and it fails with 401 - unauthorized
error:
List<String> authScheme = new ArrayList<String>();
authScheme.add(HttpTransportProperties.Authenticator.NTLM);
HttpTransportProperties.Authenticator ntlm =
new HttpTransportProperties.Authenticator();
ntlm.setAuthSchemes(authScheme);
ntlm.setUsername("Administrator");
ntlm.setPassword("password");
ntlm.setHost("http://server/_vti_bin/someservice.asmx");
ntlm.setPort(80);
ntlm.setDomain("server_domain");
Options options = webs._getServiceClient().getOptions();
options.setProperty(HTTPConstants.AUTHENTICATE, ntlm);
stub._getServiceClient().setOptions(options);
用C#编写的客户端可以正常使用相同的身份验证设置:
A client written in C# works fine with the same auth settings:
CredentialCache myCache = new CredentialCache();
myCache.Add(new Uri(webs.Url), "NTLM",
new NetworkCredential("Administrator", "password", "server_domain"));
stub.Credentials = myCache;
推荐答案
HttpClient不支持NTLM v2因此我使用JCIFS库来返回本网站所述的NTLM v1,2,3消息类型
HttpClient doesnt support NTLM v2 hence I use JCIFS library to return NTLM v1,2,3 message type as described in this website
http://devsac.blogspot.com/2010/10/supoprt-for-ntlmv2-with-apache.html
我刚刚使用上述网站上的JCIFS_NTLMScheme.java文件注册了auth方案并且工作正常!!!!
I just used the JCIFS_NTLMScheme.java file from the above website to register the auth scheme and it worked !!!!
示例客户:
List authSchema = new ArrayList();
AuthPolicy.registerAuthScheme(AuthPolicy.NTLM, org.tempuri.JCIFS_NTLMScheme.class);
HttpTransportProperties.Authenticator auth = new HttpTransportProperties.Authenticator();
auth.setUsername("");
auth.setPassword("");
auth.setDomain("");
auth.setHost("");
auth.setPort();
List authPrefs = new ArrayList(1);
authPrefs.add(AuthPolicy.NTLM);
auth.setAuthSchemes(authPrefs);
stub._getServiceClient().getOptions().setProperty(org.apache.axis2.transport.http.HTTPConstants.AUTHENTICATE, auth);
这篇关于axis2客户端NTLM身份验证的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!