【问题标题】:NTLM authentication scheme selected errorNTLM 身份验证方案选择错误
【发布时间】:2013-05-15 00:29:26
【问题描述】:

我正在用 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 身份验证错误?

【问题讨论】:

    标签: java web-services api exchange-server exchange-server-2010


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      就我而言,这是不正确的身份验证偏好顺序。 我只是通过编辑代码来更改它们。 我正在使用 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)而不是修改代码?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多