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

Reply via email to