Web Services NTLM身份验证方案选择错误

pu82cl6c  于 2022-11-15  发布在  其他
关注(0)|答案(2)|浏览(217)

我正在用java开发一个应用程序,从exchange server(版本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身份验证错误?

wqlqzqxt

wqlqzqxt1#

启用跟踪:service.setTraceEnabled(true);您确定您的Exchange版本是2010吗?请使用this指南进行检查
也尝试删除service.autodiscoverUrl("user@domain.com");

relj7zay

relj7zay2#

在我的例子中,这是一个不正确的授权首选项顺序。我只是通过编辑代码来更改它们。我使用的是EX_2007_SP3。
microsoft.exchange.webservices.data.HttpClientWebRequest:prepareConnection()prepareAsyncConnection()方法中,我更改了auth首选项顺序
从,

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

到,

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

而且它仍然在工作:)我看到一些开发人员也使用谈判。
希望这对你有帮助。

相关问题