[
https://issues.apache.org/jira/browse/AXIS2-4595?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13262893#comment-13262893
]
Peter Dunphy commented on AXIS2-4595:
-------------------------------------
The problem appears to be in AbstractHttpSender.setAuthenticationInfo().
The first usage of variable "host" in the snippet below is actually used as
the WORKSTATION in the NTLM exchange.
The second occurrence of the "host" variable is used as the Remote Host when
creating the AuthScope.
There needs to be two variables not one; RemoteHost and Workstation and
obviously there values are different..
Peter
if (host != null) {
if (domain != null) {
/*Credentials for NTLM Authentication*/
creds = new NTCredentials(username, password, host,
domain);
} else {
/*Credentials for Digest and Basic Authentication*/
creds = new UsernamePasswordCredentials(username,
password);
}
tmpHttpState.setCredentials(new AuthScope(host, port,
realm), creds);
}
> No Credentials provider found when authenticating with NTLM
> -----------------------------------------------------------
>
> Key: AXIS2-4595
> URL: https://issues.apache.org/jira/browse/AXIS2-4595
> Project: Axis2
> Issue Type: Bug
> Components: transports
> Affects Versions: 1.5.1
> Environment: windows, NTLM authentication against Exchange WS 2007
> Reporter: Dominique Jean-Prost
>
> I'm meeting a problem I really can't resolve and after reading many lines of
> code in axis2, here where I am :
> - I'm trying to call a ms exchange 2007 WS
> - I setup I think my authentication code using this kind of code :
> final Options options =
> this.serviceExchange._getServiceClient().getOptions();
> final Authenticator authenticator = new Authenticator();
>
> // Cf.
> http://ws.apache.org/axis2/1_5_1/http-transport.html#preemptive_auth
> final List<String> authScheme = new ArrayList<String>();
> authScheme.add(Authenticator.NTLM);
> authScheme.add(Authenticator.BASIC);
>
> authenticator.setAuthSchemes(authScheme);
> authenticator.setUsername(this.username);
> authenticator.setPassword(this.password);
> authenticator.setHost(this.host);
> authenticator.setDomain(this.domain);
> authenticator.setPort(this.port);
>
> options.setTimeOutInMilliSeconds(this.timeout);
> options.setProperty(HTTPConstants.CHUNKED, "false");
> options.setProperty(HTTPConstants.REUSE_HTTP_CLIENT, "true");
> options.setProperty(HTTPConstants.AUTHENTICATE, authenticator);
>
> this.serviceExchange._getServiceClient().setOptions(options);
> I then get the following execution logs where you can see that there is no
> credential providers found.
> So I searched the net, and found this
> http://markmail.org/search/list:org%2Eapache%2Ews%2Eaxis-dev+CredentialsProvider
> where you can see that the credential providers was first added and the
> deleted in org/apache/axis2/transport/http/AbstractHTTPSender.java
> Execution log:
> HttpMethodDirector.java:843) - Authorization required
> 2009-12-21 12:01:11,447 DEBUG
> org.apache.commons.httpclient.HttpMethodDirector (
> HttpMethodDirector.java:662) - enter
> HttpMethodBase.processAuthenticationResponse(HttpState, HttpConnection)
> 2009-12-21 12:01:11,447 DEBUG
> org.apache.commons.httpclient.auth.AuthChallengeProcessor (
> AuthChallengeProcessor.java:90) - Supported authentication schemes in the
> order of preference: [NTLM, Basic]
> 2009-12-21 12:01:11,447 INFO
> org.apache.commons.httpclient.auth.AuthChallengeProcessor (
> AuthChallengeProcessor.java:101) - NTLM authentication scheme selected
> 2009-12-21 12:01:11,463 DEBUG
> org.apache.commons.httpclient.auth.AuthChallengeProcessor (
> AuthChallengeProcessor.java:155) - Using authentication scheme: ntlm
> 2009-12-21 12:01:11,463 DEBUG
> org.apache.commons.httpclient.auth.AuthChallengeProcessor (
> AuthChallengeProcessor.java:163) - Authorization challenge processed
> 2009-12-21 12:01:11,463 DEBUG
> org.apache.commons.httpclient.HttpMethodDirector (
> HttpMethodDirector.java:714) - Authentication scope: NTLM <any
> realm>@mercure:443
> 2009-12-21 12:01:11,463 DEBUG org.apache.commons.httpclient.HttpState (
> HttpState.java:436) - enter HttpState.getCredentials(AuthScope)
> 2009-12-21 12:01:11,463 DEBUG
> org.apache.commons.httpclient.HttpMethodDirector (
> HttpMethodDirector.java:861) - Credentials required
> 2009-12-21 12:01:11,463 DEBUG
> org.apache.commons.httpclient.HttpMethodDirector (
> HttpMethodDirector.java:879) - Credentials provider not available
> 2009-12-21 12:01:11,463 INFO
> org.apache.commons.httpclient.HttpMethodDirector (
> HttpMethodDirector.java:737) - No credentials available for NTLM <any
> realm>@mercure:443
> 2009-12-21 12:01:11,463 DEBUG org.apache.axis2.transport.http.HTTPSender (
> HTTPSender.java:278) - Handling response - 401
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]