NTLM认证方案选择错误

4
我正在开发一款用Java编写的应用程序,从Exchange Server(版本10)获取电子邮件附件。我使用的是Windows 7(32位)的个人电脑。我的代码已经成功编译,但运行时出错,提示如下-
May 20, 2013 5:58:46 PM org.apache.commons.httpclient.auth.AuthChallengeProcessor selectAuthScheme
INFO: NTLM authentication scheme selected
May 20, 2013 5:58:47 PM org.apache.commons.httpclient.HttpMethodDirector processWWWAuthChallenge
INFO: Failure authenticating with NTLM <any realm>@autodiscover.mydomain.com:443


我的代码如下 -

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010);
    ExchangeCredentials credentials;
    credentials = new WebCredentials("myuser", "mypwd","mydomain");
    service.setCredentials(credentials);
    service.autodiscoverUrl("user@domain.com");

如何解决NTLM身份验证错误?
2个回答

0
在我的情况下,这是由于认证偏好设置的错误顺序。我通过编辑代码进行了更改。我正在使用EX_2007_SP3。
在microsoft.exchange.webservices.data.HttpClientWebRequest:prepareConnection()和prepareAsyncConnection()方法中,我更改了认证偏好设置的顺序。
从,
authPrefs.add(AuthPolicy.NTLM);
authPrefs.add(AuthPolicy.BASIC);
authPrefs.add(AuthPolicy.DIGEST);

至,

authPrefs.add(AuthPolicy.BASIC);
authPrefs.add(AuthPolicy.NTLM);
authPrefs.add(AuthPolicy.DIGEST);

它仍然在工作 :) 我见过一些开发者也使用NEGOTIATE。

希望这可以帮到你。


有没有一种方法可以选择不同的AuthPolicy(例如SPNEGO),而不是修改代码? - Dat Chu

0

启用跟踪: service.setTraceEnabled(true); 你确定你的Exchange版本是2010吗?使用this指南进行检查

还可以尝试删除service.autodiscoverUrl("user@domain.com");


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接