diff --git a/redback-authentication/redback-authentication-api/src/main/java/org/apache/archiva/redback/authentication/AuthenticationConstants.java b/redback-authentication/redback-authentication-api/src/main/java/org/apache/archiva/redback/authentication/AuthenticationConstants.java index 35c9bfd7..88e4d2b6 100644 --- a/redback-authentication/redback-authentication-api/src/main/java/org/apache/archiva/redback/authentication/AuthenticationConstants.java +++ b/redback-authentication/redback-authentication-api/src/main/java/org/apache/archiva/redback/authentication/AuthenticationConstants.java @@ -29,4 +29,9 @@ public class AuthenticationConstants // for User Manager Authenticator public static final String AUTHN_NO_SUCH_USER = "1"; + /** + * @since 2.1 + */ + public static final String AUTHN_RUNTIME_EXCEPTION = "2"; + } diff --git a/redback-authentication/redback-authentication-api/src/main/java/org/apache/archiva/redback/authentication/AuthenticationResult.java b/redback-authentication/redback-authentication-api/src/main/java/org/apache/archiva/redback/authentication/AuthenticationResult.java index 90a4cf07..2608959a 100644 --- a/redback-authentication/redback-authentication-api/src/main/java/org/apache/archiva/redback/authentication/AuthenticationResult.java +++ b/redback-authentication/redback-authentication-api/src/main/java/org/apache/archiva/redback/authentication/AuthenticationResult.java @@ -22,6 +22,7 @@ import org.apache.archiva.redback.users.User; import java.io.Serializable; +import java.util.HashMap; import java.util.Map; /** diff --git a/redback-authentication/redback-authentication-api/src/main/java/org/apache/archiva/redback/authentication/DefaultAuthenticationManager.java b/redback-authentication/redback-authentication-api/src/main/java/org/apache/archiva/redback/authentication/DefaultAuthenticationManager.java index b05539b0..85c6d595 100644 --- a/redback-authentication/redback-authentication-api/src/main/java/org/apache/archiva/redback/authentication/DefaultAuthenticationManager.java +++ b/redback-authentication/redback-authentication-api/src/main/java/org/apache/archiva/redback/authentication/DefaultAuthenticationManager.java @@ -46,21 +46,21 @@ public class DefaultAuthenticationManager implements AuthenticationManager { - + private List authenticators; @Inject private ApplicationContext applicationContext; - + @SuppressWarnings("unchecked") @PostConstruct public void initialize() { - this.authenticators = new ArrayList - ( applicationContext.getBeansOfType( Authenticator.class ).values() ); + this.authenticators = + new ArrayList( applicationContext.getBeansOfType( Authenticator.class ).values() ); } - - + + public String getId() { return "Default Authentication Manager - " + this.getClass().getName() + " : managed authenticators - " + @@ -77,13 +77,13 @@ public AuthenticationResult authenticate( AuthenticationDataSource source ) } // put AuthenticationResult exceptions in a map - Map authnResultExceptionsMap = new HashMap(); + Map authnResultExceptionsMap = new HashMap(); for ( Authenticator authenticator : authenticators ) { if ( authenticator.supportsDataSource( source ) ) { AuthenticationResult authResult = authenticator.authenticate( source ); - Map exceptionsMap = authResult.getExceptionsMap(); + Map exceptionsMap = authResult.getExceptionsMap(); if ( authResult.isAuthenticated() ) { @@ -94,6 +94,16 @@ public AuthenticationResult authenticate( AuthenticationDataSource source ) { authnResultExceptionsMap.putAll( exceptionsMap ); } + else + { + if ( authResult.getException() != null ) + { + authnResultExceptionsMap.put( AuthenticationConstants.AUTHN_RUNTIME_EXCEPTION, + authResult.getException().getMessage() ); + } + } + + } } diff --git a/redback-authentication/redback-authentication-providers/redback-authentication-ldap/src/main/java/org/apache/archiva/redback/authentication/ldap/LdapBindAuthenticator.java b/redback-authentication/redback-authentication-providers/redback-authentication-ldap/src/main/java/org/apache/archiva/redback/authentication/ldap/LdapBindAuthenticator.java index 56b86b13..3269c1a7 100644 --- a/redback-authentication/redback-authentication-providers/redback-authentication-ldap/src/main/java/org/apache/archiva/redback/authentication/ldap/LdapBindAuthenticator.java +++ b/redback-authentication/redback-authentication-providers/redback-authentication-ldap/src/main/java/org/apache/archiva/redback/authentication/ldap/LdapBindAuthenticator.java @@ -19,6 +19,7 @@ * under the License. */ +import org.apache.archiva.redback.authentication.AuthenticationConstants; import org.apache.archiva.redback.common.ldap.UserMapper; import org.apache.archiva.redback.common.ldap.connection.LdapConnectionFactory; import org.apache.archiva.redback.configuration.UserConfiguration; @@ -42,6 +43,8 @@ import javax.naming.directory.DirContext; import javax.naming.directory.SearchControls; import javax.naming.directory.SearchResult; +import java.util.HashMap; +import java.util.Map; /** * LdapBindAuthenticator: