You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ol...@apache.org on 2012/02/08 15:38:27 UTC
svn commit: r1241912 - in /maven/wagon/trunk/wagon-providers:
wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/
wagon-http-shared/src/test/java/org/apache/maven/wagon/shared/http/
wagon-http-shared4/src/test/java/org/apache/maven/wago...
Author: olamy
Date: Wed Feb 8 14:38:27 2012
New Revision: 1241912
URL: http://svn.apache.org/viewvc?rev=1241912&view=rev
Log:
[WAGON-368] Support NTLM authentication
Submitted by Adrián Boimvaser.
Modified:
maven/wagon/trunk/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java
maven/wagon/trunk/wagon-providers/wagon-http-shared/src/test/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagonTest.java
maven/wagon/trunk/wagon-providers/wagon-http-shared4/src/test/java/org/apache/maven/wagon/shared/http4/AbstractHttpClientWagonTest.java
Modified: maven/wagon/trunk/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java?rev=1241912&r1=1241911&r2=1241912&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java Wed Feb 8 14:38:27 2012
@@ -202,11 +202,19 @@ public abstract class AbstractHttpClient
String username = null;
String password = null;
+ String domain = null;
if ( authenticationInfo != null )
{
username = authenticationInfo.getUserName();
+ if ( StringUtils.contains( username, "\\" ) )
+ {
+ String[] domainAndUsername = username.split( "\\\\" );
+ domain = domainAndUsername[0];
+ username = domainAndUsername[1];
+ }
+
password = authenticationInfo.getPassword();
client.getParams().setAuthenticationPreemptive( true );
@@ -216,7 +224,15 @@ public abstract class AbstractHttpClient
if ( StringUtils.isNotEmpty( username ) && StringUtils.isNotEmpty( password ) )
{
- Credentials creds = new UsernamePasswordCredentials( username, password );
+ Credentials creds;
+ if ( domain != null )
+ {
+ creds = new NTCredentials( username, password, host, domain );
+ }
+ else
+ {
+ creds = new UsernamePasswordCredentials( username, password );
+ }
int port = getRepository().getPort() > -1 ? getRepository().getPort() : AuthScope.ANY_PORT;
@@ -722,7 +738,7 @@ public abstract class AbstractHttpClient
protected void putFromStream( InputStream stream, Resource resource )
throws TransferFailedException, AuthorizationException, ResourceDoesNotExistException
{
- putFromStream( stream, resource.getName( ), -1, -1 );
+ putFromStream( stream, resource.getName(), -1, -1 );
}
@Override
Modified: maven/wagon/trunk/wagon-providers/wagon-http-shared/src/test/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagonTest.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-http-shared/src/test/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagonTest.java?rev=1241912&r1=1241911&r2=1241912&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-http-shared/src/test/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagonTest.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-http-shared/src/test/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagonTest.java Wed Feb 8 14:38:27 2012
@@ -19,14 +19,21 @@ package org.apache.maven.wagon.shared.ht
* under the License.
*/
+import junit.framework.TestCase;
+import org.apache.commons.httpclient.Credentials;
import org.apache.commons.httpclient.Header;
+import org.apache.commons.httpclient.NTCredentials;
+import org.apache.commons.httpclient.auth.AuthScope;
import org.apache.commons.httpclient.methods.HeadMethod;
import org.apache.commons.httpclient.params.HttpClientParams;
import org.apache.commons.httpclient.params.HttpMethodParams;
-
-import junit.framework.TestCase;
+import org.apache.maven.wagon.ConnectionException;
import org.apache.maven.wagon.OutputData;
import org.apache.maven.wagon.TransferFailedException;
+import org.apache.maven.wagon.authentication.AuthenticationException;
+import org.apache.maven.wagon.authentication.AuthenticationInfo;
+import org.apache.maven.wagon.proxy.ProxyInfo;
+import org.apache.maven.wagon.repository.Repository;
public class AbstractHttpClientWagonTest
extends TestCase
@@ -144,6 +151,78 @@ public class AbstractHttpClientWagonTest
assertNull( header );
}
+ public void testNTCredentialsWithUsernameNull()
+ throws AuthenticationException, ConnectionException
+ {
+ TestWagon wagon = new TestWagon();
+
+ Repository repository = new Repository( "mockRepoId", "mockRepoURL" );
+ wagon.connect( repository );
+
+ wagon.openConnection();
+
+ assertNull( wagon.getAuthenticationInfo().getUserName() );
+ assertNull( wagon.getAuthenticationInfo().getPassword() );
+
+ assertFalse( wagon.getClient().getState().getCredentials( new AuthScope( null, 0 ) ) instanceof NTCredentials );
+ }
+
+ public void testNTCredentialsNoNTDomain()
+ throws AuthenticationException, ConnectionException
+ {
+ TestWagon wagon = new TestWagon();
+
+ AuthenticationInfo authenticationInfo = new AuthenticationInfo();
+ String myUsernameNoNTDomain = "myUserNameNoNTDomain";
+ authenticationInfo.setUserName( myUsernameNoNTDomain );
+
+ String myPassword = "myPassword";
+ authenticationInfo.setPassword( myPassword );
+
+ Repository repository = new Repository( "mockRepoId", "mockRepoURL" );
+
+ wagon.connect( repository, authenticationInfo, (ProxyInfo) null );
+
+ wagon.openConnection();
+
+ assertEquals( myUsernameNoNTDomain, wagon.getAuthenticationInfo().getUserName() );
+ assertEquals( myPassword, wagon.getAuthenticationInfo().getPassword() );
+
+ assertFalse( wagon.getClient().getState().getCredentials( new AuthScope( null, 0 ) ) instanceof NTCredentials );
+ }
+
+ public void testNTCredentialsWithNTDomain()
+ throws AuthenticationException, ConnectionException
+ {
+ TestWagon wagon = new TestWagon();
+
+ AuthenticationInfo authenticationInfo = new AuthenticationInfo();
+ String myNTDomain = "myNTDomain";
+ String myUsername = "myUsername";
+ String myNTDomainAndUser = myNTDomain + "\\" + myUsername;
+ authenticationInfo.setUserName( myNTDomainAndUser );
+
+ String myPassword = "myPassword";
+ authenticationInfo.setPassword( myPassword );
+
+ Repository repository = new Repository( "mockRepoId", "mockRepoURL" );
+
+ wagon.connect( repository, authenticationInfo, (ProxyInfo) null );
+
+ wagon.openConnection();
+
+ assertEquals( myNTDomainAndUser, wagon.getAuthenticationInfo().getUserName() );
+ assertEquals( myPassword, wagon.getAuthenticationInfo().getPassword() );
+
+ Credentials credentials = wagon.getClient().getState().getCredentials( new AuthScope( null, 0 ) );
+ assertTrue( credentials instanceof NTCredentials );
+
+ NTCredentials ntCredentials = (NTCredentials) credentials;
+ assertEquals( myNTDomain, ntCredentials.getDomain() );
+ assertEquals( myUsername, ntCredentials.getUserName() );
+ assertEquals( myPassword, ntCredentials.getPassword() );
+ }
+
private static final class TestWagon
extends AbstractHttpClientWagon
{
Modified: maven/wagon/trunk/wagon-providers/wagon-http-shared4/src/test/java/org/apache/maven/wagon/shared/http4/AbstractHttpClientWagonTest.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-http-shared4/src/test/java/org/apache/maven/wagon/shared/http4/AbstractHttpClientWagonTest.java?rev=1241912&r1=1241911&r2=1241912&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-http-shared4/src/test/java/org/apache/maven/wagon/shared/http4/AbstractHttpClientWagonTest.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-http-shared4/src/test/java/org/apache/maven/wagon/shared/http4/AbstractHttpClientWagonTest.java Wed Feb 8 14:38:27 2012
@@ -27,9 +27,6 @@ import org.apache.http.client.params.Cli
import org.apache.http.params.HttpParams;
import org.apache.maven.wagon.OutputData;
import org.apache.maven.wagon.TransferFailedException;
-import org.apache.maven.wagon.shared.http4.AbstractHttpClientWagon;
-import org.apache.maven.wagon.shared.http4.HttpConfiguration;
-import org.apache.maven.wagon.shared.http4.HttpMethodConfiguration;
public class AbstractHttpClientWagonTest
extends TestCase