Roy Golan has uploaded a new change for review. Change subject: core: custom jboss login plugin using digest ......................................................................
core: custom jboss login plugin using digest this plugin will enable us to auth users who whants to perform management actions like JMX etc. ! - doesn't work with Jboss AS 7.1.1 Change-Id: I0e504c9b429f7fe02d42b0170e6e3a08b801efae Signed-off-by: Roy Golan <rgo...@redhat.com> --- M backend/manager/modules/aaa/pom.xml A backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/jboss_auth_plugin/OvirtAuthPlugIn.java A backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/jboss_auth_plugin/OvirtAuthPlugInProvider.java M backend/manager/modules/aaa/src/main/modules/org/ovirt/engine/core/aaa/main/module.xml A backend/manager/modules/aaa/src/main/resources/META-INF/services/org.jboss.as.domain.management.plugin.PlugInProvider M packaging/services/ovirt-engine/ovirt-engine.xml.in 6 files changed, 91 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/93/29693/1 diff --git a/backend/manager/modules/aaa/pom.xml b/backend/manager/modules/aaa/pom.xml index 23f9bec..9559127 100644 --- a/backend/manager/modules/aaa/pom.xml +++ b/backend/manager/modules/aaa/pom.xml @@ -49,6 +49,11 @@ <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> </dependency> + <dependency> + <groupId>org.jboss.as</groupId> + <artifactId>jboss-as-domain-management</artifactId> + <version>7.2.0.Final</version> + </dependency> </dependencies> diff --git a/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/jboss_auth_plugin/OvirtAuthPlugIn.java b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/jboss_auth_plugin/OvirtAuthPlugIn.java new file mode 100644 index 0000000..6d6cc0b --- /dev/null +++ b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/jboss_auth_plugin/OvirtAuthPlugIn.java @@ -0,0 +1,53 @@ +package org.ovirt.engine.core.aaa.jboss_auth_plugin; + +import org.jboss.as.domain.management.plugin.AbstractPlugIn; +import org.jboss.as.domain.management.plugin.AuthorizationPlugIn; +import org.jboss.as.domain.management.plugin.DigestCredential; +import org.jboss.as.domain.management.plugin.Identity; +import org.ovirt.engine.core.common.action.LoginUserParameters; +import org.ovirt.engine.core.common.interfaces.BackendLocal; + +import javax.inject.Inject; +import java.io.IOException; +import java.util.Map; + +public class OvirtAuthPlugIn extends AbstractPlugIn { + + @Inject + BackendLocal backendLocal; + + public void init(Map<String, String> configuration, Map<String, Object> sharedState) throws IOException { + this.configuration = configuration; + // This will allow an AuthorizationPlugIn to delegate back to this instance. + sharedState.put(AuthorizationPlugIn.class.getName(), this); + } + + @Override public Identity loadIdentity(String username, String realm) throws IOException { + return new OvirtIdentity(username, realm); + } + + + public class OvirtIdentity implements Identity<DigestCredential>{ + private String hash, username, realm; + + public OvirtIdentity(String username, String realm) { + this.username = username; + this.realm = realm; + createHash(); + } + + private void createHash() { + // WIP get a hash of the username password and realm from the backend + hash = backendLocal.getUserHash(username, realm); + } + + @Override public String getUserName() { + return username; + } + + @Override public DigestCredential getCredential() { + return new DigestCredential(hash); + } + } + +} diff --git a/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/jboss_auth_plugin/OvirtAuthPlugInProvider.java b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/jboss_auth_plugin/OvirtAuthPlugInProvider.java new file mode 100644 index 0000000..c7eb04a --- /dev/null +++ b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/jboss_auth_plugin/OvirtAuthPlugInProvider.java @@ -0,0 +1,19 @@ +package org.ovirt.engine.core.aaa.jboss_auth_plugin; + +import org.jboss.as.domain.management.plugin.AuthenticationPlugIn; +import org.jboss.as.domain.management.plugin.AuthorizationPlugIn; +import org.jboss.as.domain.management.plugin.Credential; +import org.jboss.as.domain.management.plugin.PlugInProvider; + +public class OvirtAuthPlugInProvider implements PlugInProvider { + @Override public AuthenticationPlugIn<Credential> loadAuthenticationPlugIn(String s) { + if ("OvirtAuth".equals(s)) { + return new OvirtAuthPlugIn(); + } + return null; + } + + @Override public AuthorizationPlugIn loadAuthorizationPlugIn(String s) { + return null; + } +} diff --git a/backend/manager/modules/aaa/src/main/modules/org/ovirt/engine/core/aaa/main/module.xml b/backend/manager/modules/aaa/src/main/modules/org/ovirt/engine/core/aaa/main/module.xml index 5b730b1..2247562 100644 --- a/backend/manager/modules/aaa/src/main/modules/org/ovirt/engine/core/aaa/main/module.xml +++ b/backend/manager/modules/aaa/src/main/modules/org/ovirt/engine/core/aaa/main/module.xml @@ -9,6 +9,7 @@ <dependencies> <module name="javax.api"/> <module name="javax.servlet.api"/> + <module name="org.jboss.as.domain.management"/> <module name="org.apache.commons.codec"/> <module name="org.apache.commons.lang"/> <module name="org.ovirt.engine.core.common"/> diff --git a/backend/manager/modules/aaa/src/main/resources/META-INF/services/org.jboss.as.domain.management.plugin.PlugInProvider b/backend/manager/modules/aaa/src/main/resources/META-INF/services/org.jboss.as.domain.management.plugin.PlugInProvider new file mode 100644 index 0000000..50124c8 --- /dev/null +++ b/backend/manager/modules/aaa/src/main/resources/META-INF/services/org.jboss.as.domain.management.plugin.PlugInProvider @@ -0,0 +1 @@ +org.ovirt.engine.core.aaa.jboss_auth_plugin.OvirtAuthPlugInProvider diff --git a/packaging/services/ovirt-engine/ovirt-engine.xml.in b/packaging/services/ovirt-engine/ovirt-engine.xml.in index ac772e3..2e125f2 100644 --- a/packaging/services/ovirt-engine/ovirt-engine.xml.in +++ b/packaging/services/ovirt-engine/ovirt-engine.xml.in @@ -50,6 +50,18 @@ <properties path="/dev/null"/> </authentication> </security-realm> + <security-realm name="ovirt"> + <plug-ins> + <plug-in module="org.ovirt.engine.core.aaa"/> + </plug-ins> + + <authentication> + <plug-in name="OvirtAuth"/> + </authentication> + <uthorization> + <plug-in name="Delegate"/> + </authorization> + </security-realm> </security-realms> <management-interfaces> <native-interface security-realm="management"> -- To view, visit http://gerrit.ovirt.org/29693 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I0e504c9b429f7fe02d42b0170e6e3a08b801efae Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Roy Golan <rgo...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches