4

我正在用 Java 开发一个应用程序来从 Exchange 服务器(版本 10)获取电子邮件附件,我有 Windows 7(32 位)PC。我的代码编译成功,但在运行时出错,说-

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 身份验证错误?

4

2 回答 2

0

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

也尝试删除service.autodiscoverUrl("user@domain.com");

于 2013-06-11T14:31:37.777 回答
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。

希望这可以帮助。

于 2014-02-21T08:48:29.933 回答