Adding flag for authenticator to avoid autowiring exceptions

Adds a isValid() method to the authenticator to avoid exceptions during
initialization.
This commit is contained in:
Martin Stockhammer 2016-10-03 19:36:13 +02:00
parent d17c6ffb9d
commit 7e83bebcec
6 changed files with 29 additions and 3 deletions

View File

@ -24,9 +24,15 @@ package org.apache.archiva.redback.authentication;
public abstract class AbstractAuthenticator public abstract class AbstractAuthenticator
implements Authenticator implements Authenticator
{ {
protected boolean valid = false;
public void initialize() public void initialize()
throws AuthenticationException throws AuthenticationException
{ {
// no op valid = true;
}
public boolean isValid() {
return valid;
} }
} }

View File

@ -38,4 +38,6 @@ public interface Authenticator
throws AccountLockedException, AuthenticationException, MustChangePasswordException; throws AccountLockedException, AuthenticationException, MustChangePasswordException;
void initialize() throws AuthenticationException; void initialize() throws AuthenticationException;
boolean isValid();
} }

View File

@ -92,7 +92,7 @@ public class DefaultAuthenticationManager
List<AuthenticationFailureCause> authnResultErrors = new ArrayList<AuthenticationFailureCause>(); List<AuthenticationFailureCause> authnResultErrors = new ArrayList<AuthenticationFailureCause>();
for ( Authenticator authenticator : authenticators ) for ( Authenticator authenticator : authenticators )
{ {
if ( authenticator.supportsDataSource( source ) ) if ( authenticator.isValid() && authenticator.supportsDataSource( source ) )
{ {
AuthenticationResult authResult = authenticator.authenticate( source ); AuthenticationResult authResult = authenticator.authenticate( source );
List<AuthenticationFailureCause> authenticationFailureCauses = List<AuthenticationFailureCause> authenticationFailureCauses =

View File

@ -208,4 +208,9 @@ public class LdapBindAuthenticator
log.warn( "skip exception closing naming search result {}", e.getMessage() ); log.warn( "skip exception closing naming search result {}", e.getMessage() );
} }
} }
@Override
public boolean isValid() {
return connectionFactory.isValid();
}
} }

View File

@ -21,6 +21,8 @@ package org.apache.archiva.redback.common.ldap.connection;
import org.apache.archiva.redback.configuration.UserConfiguration; import org.apache.archiva.redback.configuration.UserConfiguration;
import org.apache.archiva.redback.configuration.UserConfigurationKeys; import org.apache.archiva.redback.configuration.UserConfigurationKeys;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
@ -41,6 +43,8 @@ public class ConfigurableLdapConnectionFactory
implements LdapConnectionFactory implements LdapConnectionFactory
{ {
private final Logger log = LoggerFactory.getLogger(ConfigurableLdapConnectionFactory.class);
private String hostname; private String hostname;
private int port; private int port;
@ -61,6 +65,8 @@ public class ConfigurableLdapConnectionFactory
private LdapConnectionConfiguration ldapConnectionConfiguration; private LdapConnectionConfiguration ldapConnectionConfiguration;
private boolean valid = false;
@Inject @Inject
@Named(value = "userConfiguration#default") @Named(value = "userConfiguration#default")
@ -90,10 +96,11 @@ public class ConfigurableLdapConnectionFactory
ldapConnectionConfiguration.setAuthenticationMethod( ldapConnectionConfiguration.setAuthenticationMethod(
userConf.getString( UserConfigurationKeys.LDAP_AUTHENTICATION_METHOD, authenticationMethod ) ); userConf.getString( UserConfigurationKeys.LDAP_AUTHENTICATION_METHOD, authenticationMethod ) );
ldapConnectionConfiguration.setExtraProperties( extraProperties ); ldapConnectionConfiguration.setExtraProperties( extraProperties );
valid = true;
} }
catch ( InvalidNameException e ) catch ( InvalidNameException e )
{ {
throw new RuntimeException( "Error while initializing connection factory.", e ); log.error("Error during initialization of LdapConnectionFactory "+e.getMessage(),e);
} }
} }
@ -266,4 +273,8 @@ public class ConfigurableLdapConnectionFactory
{ {
this.userConf = userConf; this.userConf = userConf;
} }
public boolean isValid() {
return valid;
}
} }

View File

@ -51,4 +51,6 @@ public interface LdapConnectionFactory
void initialize(); void initialize();
public boolean isValid();
} }