Details
-
Type:
Bug
-
Status:
Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: 2.2.1
-
Fix Version/s: 3.0.4
-
Component/s: Artifacts and Repositories
-
Labels:None
-
Environment:Sun Java 1.6.0_21, Windows 7
-
Complexity:Intermediate
-
Number of attachments :
Description
It seems preemptive authentication in Maven using httpclient wagon provider doesn't work. With configuration taken form [1] Maven knock to repository (tested with Artifactory 2.2.5) as anonymous user.
<server>
<id>repo-id</id>
<username>user</username>
<password>pass</password>
<configuration>
<wagonProvider>httpclient</wagonProvider>
<httpConfiguration>
<put>
<params>
<param>
<name>http.authentication.preemptive</name>
<value>%b,true</value>
</param>
</params>
</put>
</httpConfiguration>
</configuration>
</server>
Confirmed by independent party also with Maven 2.2.1. I can sniff http traffic if needed.
[1] - http://maven.apache.org/guides/mini/guide-http-settings.html
Having hit the same problem as you I've come to the conclusion that there are multiple layers of problems here that hinders preemptive authentication from working:
1) The configuration listed in [1] is never injected into the HttpMethodConfiguration-objects created by Plexus during configuration of HttpWagon. This is caused by the fact that the params-field in HttpMethodConfiguration is of type Properties and PropertiesConverter does not recognize the param-element. Replacing param with property fixes this part of the problem:
2) Once properly configured Http Client ignores the preemptive-parameter completely. This is caused by the fact that the check for preemptive authentication in HTTP Client's HttpMethodDirector (line 158) is not performed on the PutMethod-object. The check is done one the HttpClientParams-object and this one has not been configured by HttpWagon to include any information about preemptive-auth.