gpt4 book ai didi

java - axis2客户端NTLM身份验证

转载 作者:行者123 更新时间:2023-12-02 16:20:08 25 4
gpt4 key购买 nike

我有一个 axis2 (v1.5.3) 客户端,需要使用 IIS 进行 Kerberos/NTLM 身份验证。我怎样才能做到这一点?这是我现在拥有的代码,它失败并出现 401 - 未经授权 错误:

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# 编写的客户端可以在相同的身份验证设置下正常工作:

CredentialCache myCache = new CredentialCache();            
myCache.Add(new Uri(webs.Url), "NTLM",
new NetworkCredential("Administrator", "password", "server_domain"));
stub.Credentials = myCache;

最佳答案

AXIS2 中的 NTLM 存在问题。它以 ntlm.setHost() 方法为中心。此处的条目既用作 NTLM 交换中的工作站,也用作创建 AuthScope 时的远程主机。这会造成第 22 条军规 (Catch-22) 情况,其中 NTLM 无法使用 HttpTransportProperties.Authenticator 技术工作。您要么收到“401 未经授权”,要么收到“找不到 @HOST 的凭据”。

参见https://issues.apache.org/jira/browse/AXIS2-4595

彼得

关于java - axis2客户端NTLM身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5865539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com