Yair Zaslavsky has uploaded a new change for review. Change subject: 5. [WIP] core: introducing profile name ot authenticator classes. ......................................................................
5. [WIP] core: introducing profile name ot authenticator classes. An authenticator should be aware to the name of the profile it is associated with Change-Id: I0d24575f4f07d0a7ab0c4fe1aa4825fdc04a3b18 Signed-off-by: Yair Zaslavsky <yzasl...@redhat.com> --- M backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/Authenticator.java M backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/AuthenticatorFactory.java M backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/NegotiatingAuthenticator.java M backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/PasswordAuthenticator.java M backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/header/HeaderAuthenticator.java M backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/header/HeaderAuthenticatorFactory.java M backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/internal/InternalAuthenticator.java M backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/internal/InternalAuthenticatorFactory.java M backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/nop/NopAuthenticator.java M backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/nop/NopAuthenticatorFactory.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/aaa/provisional/ProvisionalAuthenticator.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/aaa/provisional/ProvisionalAuthenticatorFactory.java 12 files changed, 80 insertions(+), 32 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/07/24607/1 diff --git a/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/Authenticator.java b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/Authenticator.java index 21c2883..aeee5a7 100644 --- a/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/Authenticator.java +++ b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/Authenticator.java @@ -1,8 +1,22 @@ package org.ovirt.engine.core.aaa; /** - * A authenticator is an object used to verify an identity. This interface is empty, the real semantics are in the - * extensions. + * A authenticator is an object used to verify an identity. */ -public interface Authenticator { +public abstract class Authenticator { + + /** + * Returns the name of the profile the authenticator is associated with + * @return profile name + */ + public String getProfileName() { + return profileName; + } + + protected Authenticator(String profileName) { + this.profileName = profileName; + } + + private String profileName; + } diff --git a/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/AuthenticatorFactory.java b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/AuthenticatorFactory.java index 6d137a4..529b989 100644 --- a/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/AuthenticatorFactory.java +++ b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/AuthenticatorFactory.java @@ -1,10 +1,23 @@ package org.ovirt.engine.core.aaa; +import org.ovirt.engine.core.extensions.mgr.Configuration; +import org.ovirt.engine.core.extensions.mgr.ConfigurationException; import org.ovirt.engine.core.extensions.mgr.Factory; /** * This is just a concrete realization of the generic interface intended to simplify things for developers of * authenticator factories. */ -public interface AuthenticatorFactory extends Factory<Authenticator> { +public abstract class AuthenticatorFactory implements Factory<Authenticator> { + + private static final String PROFILE_NAME_KEY = "ovirt.engine.aaa.authn.profile.name"; + + public Authenticator create(Configuration config) throws ConfigurationException { + String profileName = config.getString(PROFILE_NAME_KEY); + Authenticator authenticator = createImpl(profileName, config); + return authenticator; + } + + protected abstract Authenticator createImpl(String profileName, Configuration config) throws ConfigurationException; + } diff --git a/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/NegotiatingAuthenticator.java b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/NegotiatingAuthenticator.java index c05bac1..87ccf36 100644 --- a/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/NegotiatingAuthenticator.java +++ b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/NegotiatingAuthenticator.java @@ -9,7 +9,13 @@ * instance of the {@link NegotiationResult} class containing the result of the authentication (succeeded or not) and * the name of the authenticated entity. */ -public interface NegotiatingAuthenticator extends Authenticator { +public abstract class NegotiatingAuthenticator extends Authenticator { + + protected NegotiatingAuthenticator(String profileName) { + super(profileName); + // TODO Auto-generated constructor stub + } + /** * Process the given request and return a new result object if the negotiation has finished or {@code null} if it * hasn't. If the process hasn't finished then the response must be populated by the authenticator and it will be @@ -20,5 +26,5 @@ * authentication didn't finish yet * @return a result object if the authentication process has finished or {@code null} if it hasn't */ - NegotiationResult negotiate(HttpServletRequest request, HttpServletResponse response); + public abstract NegotiationResult negotiate(HttpServletRequest request, HttpServletResponse response); } diff --git a/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/PasswordAuthenticator.java b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/PasswordAuthenticator.java index 72a04aa..92dfee3 100644 --- a/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/PasswordAuthenticator.java +++ b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/PasswordAuthenticator.java @@ -4,7 +4,13 @@ * A password authenticator checks a user name and a password. Returns an AuthenticationResult object representing the * result of the authenticate call. */ -public interface PasswordAuthenticator extends Authenticator { +public abstract class PasswordAuthenticator extends Authenticator { + + protected PasswordAuthenticator(String profileName) { + super(profileName); + // TODO Auto-generated constructor stub + } + /** * Authenticates according to the given name and password * @@ -13,5 +19,5 @@ * @param password * @return AuthenticationResult object that holds the authentication result */ - AuthenticationResult authenticate(String name, String password); + public abstract AuthenticationResult authenticate(String name, String password); } diff --git a/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/header/HeaderAuthenticator.java b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/header/HeaderAuthenticator.java index c413f5d..a79cc8c 100644 --- a/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/header/HeaderAuthenticator.java +++ b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/header/HeaderAuthenticator.java @@ -53,7 +53,7 @@ * directory.type=nop * </pre> */ -public class HeaderAuthenticator implements NegotiatingAuthenticator { +public class HeaderAuthenticator extends NegotiatingAuthenticator { private static final Logger log = LoggerFactory.getLogger(HeaderAuthenticator.class); /** @@ -64,9 +64,13 @@ /** * Create a new header authenticator. * - * @param header the name of the header containing the name of the user already authenticated by the web server + * @param profileName + * name of the authentication profile + * @param header + * the name of the header containing the name of the user already authenticated by the web server */ - public HeaderAuthenticator(String header) { + public HeaderAuthenticator(String profileName, String header) { + super(profileName); this.header = header; } diff --git a/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/header/HeaderAuthenticatorFactory.java b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/header/HeaderAuthenticatorFactory.java index b7d20de..e860242 100644 --- a/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/header/HeaderAuthenticatorFactory.java +++ b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/header/HeaderAuthenticatorFactory.java @@ -7,7 +7,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class HeaderAuthenticatorFactory implements AuthenticatorFactory { +public class HeaderAuthenticatorFactory extends AuthenticatorFactory { private static final Logger log = LoggerFactory.getLogger(HeaderAuthenticatorFactory.class); /** @@ -32,7 +32,7 @@ * {@inheritDoc} */ @Override - public Authenticator create(Configuration config) throws ConfigurationException { + public Authenticator createImpl(String profileName, Configuration config) throws ConfigurationException { // Get the name of the header: String header = config.getString(HEADER_PARAMETER); if (header == null) { @@ -44,6 +44,6 @@ } // We are good, create the authenticator: - return new HeaderAuthenticator(header); + return new HeaderAuthenticator(profileName, header); } } diff --git a/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/internal/InternalAuthenticator.java b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/internal/InternalAuthenticator.java index ef4256b..3947a5d 100644 --- a/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/internal/InternalAuthenticator.java +++ b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/internal/InternalAuthenticator.java @@ -13,7 +13,12 @@ * This authenticator authenticates the internal user as specified in the {@code AdminUser} and {@code AdminPassword} * configuration parameters stored in the database. */ -public class InternalAuthenticator implements PasswordAuthenticator { +public class InternalAuthenticator extends PasswordAuthenticator { + + protected InternalAuthenticator(String profileName) { + super(profileName); + } + private static final Logger log = LoggerFactory.getLogger(InternalAuthenticator.class); @Override diff --git a/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/internal/InternalAuthenticatorFactory.java b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/internal/InternalAuthenticatorFactory.java index 021509e..8a6dbba 100644 --- a/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/internal/InternalAuthenticatorFactory.java +++ b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/internal/InternalAuthenticatorFactory.java @@ -7,7 +7,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class InternalAuthenticatorFactory implements AuthenticatorFactory { +public class InternalAuthenticatorFactory extends AuthenticatorFactory { private static final Logger log = LoggerFactory.getLogger(InternalAuthenticatorFactory.class); /** @@ -27,7 +27,7 @@ * {@inheritDoc} */ @Override - public Authenticator create(Configuration config) throws ConfigurationException { - return new InternalAuthenticator(); + public Authenticator createImpl(String profileName, Configuration config) throws ConfigurationException { + return new InternalAuthenticator(profileName); } } diff --git a/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/nop/NopAuthenticator.java b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/nop/NopAuthenticator.java index be6b39c..3974d65 100644 --- a/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/nop/NopAuthenticator.java +++ b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/nop/NopAuthenticator.java @@ -8,9 +8,13 @@ /** * This authenticator blindly accepts any user, without any check, useful only for testing environments. */ -public class NopAuthenticator implements PasswordAuthenticator { +public class NopAuthenticator extends PasswordAuthenticator { private static final Logger log = LoggerFactory.getLogger(NopAuthenticator.class); + public NopAuthenticator(String profileName) { + super(profileName); + } + @Override public AuthenticationResult authenticate(String name, String password) { return new NopAuthenticationResult(); diff --git a/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/nop/NopAuthenticatorFactory.java b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/nop/NopAuthenticatorFactory.java index dc7483c..17805bc 100644 --- a/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/nop/NopAuthenticatorFactory.java +++ b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/nop/NopAuthenticatorFactory.java @@ -7,7 +7,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class NopAuthenticatorFactory implements AuthenticatorFactory { +public class NopAuthenticatorFactory extends AuthenticatorFactory { private static final Logger log = LoggerFactory.getLogger(NopAuthenticatorFactory.class); /** @@ -27,7 +27,7 @@ * {@inheritDoc} */ @Override - public Authenticator create(Configuration config) throws ConfigurationException { - return new NopAuthenticator(); + public Authenticator createImpl(String profileName, Configuration config) throws ConfigurationException { + return new NopAuthenticator(profileName); } } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/aaa/provisional/ProvisionalAuthenticator.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/aaa/provisional/ProvisionalAuthenticator.java index a5d701c..4703f77 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/aaa/provisional/ProvisionalAuthenticator.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/aaa/provisional/ProvisionalAuthenticator.java @@ -13,11 +13,7 @@ * infrastructure. It will exist only while the engine is migrated to use the new authentication interfaces, then it * will be removed. */ -public class ProvisionalAuthenticator implements PasswordAuthenticator { - /** - * The name of the domain. - */ - private String domain; +public class ProvisionalAuthenticator extends PasswordAuthenticator { /** * The reference to the LDAP broker that implements the authentication. @@ -25,7 +21,7 @@ private LdapBroker broker; public ProvisionalAuthenticator(String domain, LdapBroker broker) { - this.domain = domain; + super(domain); this.broker = broker; } @@ -36,9 +32,9 @@ public AuthenticationResult authenticate(String name, String password) { LdapReturnValueBase ldapResult = broker.runAdAction( AdActionType.AuthenticateUser, - new LdapUserPasswordBaseParameters(domain, name, password) + new LdapUserPasswordBaseParameters(getProfileName(), name, password) ); UserAuthenticationResult authResult = (UserAuthenticationResult) ldapResult.getReturnValue(); - return new ProvisionalAuthenticationResult(domain, authResult); + return new ProvisionalAuthenticationResult(getProfileName(), authResult); } } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/aaa/provisional/ProvisionalAuthenticatorFactory.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/aaa/provisional/ProvisionalAuthenticatorFactory.java index 6d5bf25..9131583 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/aaa/provisional/ProvisionalAuthenticatorFactory.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/aaa/provisional/ProvisionalAuthenticatorFactory.java @@ -13,7 +13,7 @@ * This is the factory for the bridge between the new authentication interfaces and the existing LDAP infrastructure. It * will exist only while the engine is migrated to use the new authentication interfaces, then it will be removed. */ -public class ProvisionalAuthenticatorFactory implements AuthenticatorFactory { +public class ProvisionalAuthenticatorFactory extends AuthenticatorFactory { private Log log = LogFactory.getLog(ProvisionalAuthenticatorFactory.class); // The names of the parameters: @@ -25,7 +25,7 @@ } @Override - public Authenticator create(Configuration config) throws ConfigurationException { + public Authenticator createImpl(String profileName, Configuration config) throws ConfigurationException { // Get the name of the domain from the configuration: String domain = config.getInheritedString(DOMAIN_PARAMETER); if (domain == null) { -- To view, visit http://gerrit.ovirt.org/24607 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I0d24575f4f07d0a7ab0c4fe1aa4825fdc04a3b18 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Yair Zaslavsky <yzasl...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches