Author: [email protected]
Date: Wed Apr 25 14:16:37 2012
New Revision: 2285
Log:
[AMDATUAUTH-123] Updated login-service and useradmin-rest for new multi-tenancy
design
Added:
trunk/amdatu-auth/config/src/main/resources/org.amdatu.auth.useradmin.rest.xml
trunk/amdatu-auth/release-demo/src/main/resources/config/org.amdatu.web.rest.wink.xml
Modified:
trunk/amdatu-auth/config/src/main/resources/org.amdatu.auth.useradmin.rest.cfg
trunk/amdatu-auth/login-service/pom.xml
trunk/amdatu-auth/login-service/src/main/java/org/amdatu/auth/login/service/osgi/Activator.java
trunk/amdatu-auth/login-service/src/main/java/org/amdatu/auth/login/service/service/LoginServiceImpl.java
trunk/amdatu-auth/release-demo/pom.xml
trunk/amdatu-auth/release-demo/src/main/assembly/bin-component.xml
trunk/amdatu-auth/useradmin-rest/pom.xml
trunk/amdatu-auth/useradmin-rest/src/main/java/org/amdatu/auth/useradmin/rest/osgi/Activator.java
trunk/amdatu-auth/useradmin-rest/src/main/java/org/amdatu/auth/useradmin/rest/service/ResourceBase.java
Added:
trunk/amdatu-auth/config/src/main/resources/org.amdatu.auth.useradmin.rest.xml
==============================================================================
--- (empty file)
+++
trunk/amdatu-auth/config/src/main/resources/org.amdatu.auth.useradmin.rest.xml
Wed Apr 25 14:16:37 2012
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2010-2012 The Amdatu Foundation
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<MetaData xmlns:metatype="http://www.osgi.org/xmlns/metatype/v1.1.0"
filter="(org.amdatu.tenant.pid=tenant1)">
+ <OCD name="Amdatu Auth - UserAdmin REST service config"
id="org.amdatu.auth.useradmin.rest">
+ <AD id="password.minimum_length" type="INTEGER" cardinality="0" />
+ <AD id="password.require_mixed_case" type="BOOLEAN" cardinality="0" />
+ <AD id="password.minimum_digits" type="INTEGER" cardinality="0" />
+ <AD id="password.minimum_special_characters" type="INTEGER"
cardinality="0" />
+ </OCD>
+ <Designate pid="org.amdatu.auth.useradmin.rest" bundle="*">
+ <Object ocdref="org.amdatu.auth.useradmin.rest">
+ <!-- Requires that the password consists of at least this amount of
characters -->
+ <Attribute adref="password.minimum_length">
+ <Value>6</Value>
+ </Attribute>
+
+ <!-- Requires that the password contains letters in both lowercase and
uppercase (true or false) -->
+ <Attribute adref="password.require_mixed_case">
+ <Value>false</Value>
+ </Attribute>
+
+ <!-- Minimum amount of digits the password must have -->
+ <Attribute adref="password.minimum_digits">
+ <Value>0</Value>
+ </Attribute>
+
+ <!-- Minimum amount of special characters (other then digits and
letters) the password must have -->
+ <Attribute adref="password.minimum_special_characters">
+ <Value>0</Value>
+ </Attribute>
+ </Object>
+ </Designate>
+</MetaData>
\ No newline at end of file
Modified: trunk/amdatu-auth/login-service/pom.xml
==============================================================================
--- trunk/amdatu-auth/login-service/pom.xml (original)
+++ trunk/amdatu-auth/login-service/pom.xml Wed Apr 25 14:16:37 2012
@@ -74,7 +74,11 @@
<artifactId>maven-bundle-plugin</artifactId>
<configuration>
<instructions>
-
<Bundle-Activator>org.amdatu.auth.login.service.osgi.Activator</Bundle-Activator>
+ <X-MultiTenant-Version>1</X-MultiTenant-Version>
+
<X-MultiTenant-Bundle-Activator>org.amdatu.auth.login.service.osgi.Activator</X-MultiTenant-Bundle-Activator>
+ <X-MultiTenant-Binding>TENANTS</X-MultiTenant-Binding>
+
<X-MultiTenant-Scope>(|(org.amdatu.tenant.pid=%TENANTPID%)(objectClass=org.osgi.service.log.LogService)(objectClass=org.amdatu.web.rest.jaxrs.JaxRsSpi))</X-MultiTenant-Scope>
+
<Bundle-Activator>org.amdatu.tenant.adapter.MultiTenantBundleActivator</Bundle-Activator>
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
<Export-Package>org.amdatu.auth.login.service;version="1.0.0"</Export-Package>
<Embed-Dependency>*;scope=compile</Embed-Dependency>
Modified:
trunk/amdatu-auth/login-service/src/main/java/org/amdatu/auth/login/service/osgi/Activator.java
==============================================================================
---
trunk/amdatu-auth/login-service/src/main/java/org/amdatu/auth/login/service/osgi/Activator.java
(original)
+++
trunk/amdatu-auth/login-service/src/main/java/org/amdatu/auth/login/service/osgi/Activator.java
Wed Apr 25 14:16:37 2012
@@ -17,12 +17,13 @@
import org.amdatu.auth.login.service.LoginService;
import org.amdatu.auth.login.service.service.LoginServiceImpl;
+import org.amdatu.auth.tokenprovider.TokenProvider;
import org.amdatu.libraries.osgi.ServiceDependentActivator;
+import org.amdatu.tenant.Tenant;
import org.amdatu.web.rest.jaxrs.JaxRsSpi;
import org.apache.felix.dm.DependencyManager;
import org.osgi.framework.BundleContext;
-import org.osgi.framework.Constants;
import org.osgi.service.log.LogService;
import org.osgi.service.useradmin.UserAdmin;
@@ -31,7 +32,6 @@
*
* @author ivol
*/
-@SuppressWarnings("deprecation")
public class Activator extends ServiceDependentActivator {
@Override
@@ -41,15 +41,14 @@
@Override
public void initWithDependencies(final BundleContext context, final
DependencyManager manager) throws Exception {
- // The login service is tenant aware. This filter ensures that these
tenant aware services
- // only adapt UserAdmin services which are also tenant aware.
- String filter = "(&(" + org.amdatu.tenant.Constants.PID_KEY + "=*)(" +
Constants.OBJECTCLASS
- + "=" + UserAdmin.class.getName() + "))";
-
// Create and register the authorization service.
- manager.add(createAdapterService(UserAdmin.class, filter)
+ manager.add(
+ createComponent()
.setInterface(LoginService.class.getName(), null)
.setImplementation(LoginServiceImpl.class)
+
.add(createServiceDependency().setService(UserAdmin.class).setRequired(true))
+
.add(createServiceDependency().setService(TokenProvider.class).setRequired(true))
+
.add(createServiceDependency().setService(Tenant.class).setRequired(true))
.add(createServiceDependency().setService(LogService.class).setRequired(true)));
}
Modified:
trunk/amdatu-auth/login-service/src/main/java/org/amdatu/auth/login/service/service/LoginServiceImpl.java
==============================================================================
---
trunk/amdatu-auth/login-service/src/main/java/org/amdatu/auth/login/service/service/LoginServiceImpl.java
(original)
+++
trunk/amdatu-auth/login-service/src/main/java/org/amdatu/auth/login/service/service/LoginServiceImpl.java
Wed Apr 25 14:16:37 2012
@@ -21,8 +21,6 @@
import org.amdatu.auth.tokenprovider.TokenProviderException;
import org.amdatu.tenant.Tenant;
-import java.util.ArrayList;
-import java.util.List;
import java.util.Map;
import java.util.SortedMap;
import java.util.TreeMap;
@@ -43,12 +41,8 @@
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.ResponseBuilder;
-import org.apache.felix.dm.Component;
-import org.apache.felix.dm.DependencyManager;
-import org.apache.felix.dm.ServiceDependency;
import org.json.JSONException;
import org.json.JSONObject;
-import org.osgi.framework.Constants;
import org.osgi.service.log.LogService;
import org.osgi.service.useradmin.Group;
import org.osgi.service.useradmin.Role;
@@ -60,7 +54,6 @@
*
* @author ivol
*/
-@SuppressWarnings("deprecation")
@Path("authorization")
public class LoginServiceImpl implements LoginService {
@@ -73,7 +66,6 @@
private volatile LogService m_logService;
private volatile UserAdmin m_userAdmin;
private volatile TokenProvider m_tokenProvider;
- private volatile DependencyManager m_dependencyManager;
private volatile Tenant m_tenant;
// Disable HTTP caching in this REST interface
@@ -83,30 +75,6 @@
NO_CACHE_CONTROL.setNoCache(true);
}
- /**
- * The init() method is invoked by the Felix dependency manager.
- *
- * @throws TenantException
- */
- public void init(final Component component) {
- List<ServiceDependency> dependencies = new
ArrayList<ServiceDependency>();
-
- // Retrieve the tenant
- String tenantId = (String)
component.getServiceProperties().get(org.amdatu.tenant.Constants.PID_KEY);
- //FIXME: how to solve? m_tenant =
m_tenantManagementService.getTenantById(tenantId);
-
- // Create a service dependency on the token provider for 'our' tenant
- String tenantFilter = "(&(" + org.amdatu.tenant.Constants.PID_KEY +
"=" + tenantId + ")(" + Constants.OBJECTCLASS
- + "=" + TokenProvider.class.getName() + "))";
- dependencies.add(m_dependencyManager.createServiceDependency()
- .setService(TokenProvider.class,
tenantFilter).setRequired(true).setInstanceBound(true));
-
- component.add(dependencies);
-
- m_logService.log(LogService.LOG_INFO, getClass().getName() + " service
initialized for tenant '" + tenantId
- + "'");
- }
-
@SuppressWarnings("unchecked")
public void start() {
// If we don't have a user named 'Administrator' for this tenant, we
create one now.
Modified: trunk/amdatu-auth/release-demo/pom.xml
==============================================================================
--- trunk/amdatu-auth/release-demo/pom.xml (original)
+++ trunk/amdatu-auth/release-demo/pom.xml Wed Apr 25 14:16:37 2012
@@ -28,7 +28,7 @@
<properties>
<amdatu.http.hostname>localhost</amdatu.http.hostname>
- <amdatu.http.port>8080</amdatu.http.port>
+ <amdatu.http.port>2204</amdatu.http.port>
<amdatu.https.port>8045</amdatu.https.port>
<amdatu.log.level>INFO</amdatu.log.level>
<amdatu.tenant.id>tenant1</amdatu.tenant.id>
@@ -256,6 +256,27 @@
<type>bundle</type>
</dependency>
+
+ <dependency>
+ <groupId>org.amdatu.web</groupId>
+ <artifactId>org.amdatu.web.jsp</artifactId>
+ <version>${org.amdatu.web.version}</version>
+ <scope>runtime</scope>
+ <type>bundle</type>
+ </dependency>
+
+ <dependency>
+ <groupId>org.amdatu.web</groupId>
+ <artifactId>org.amdatu.web.resource</artifactId>
+ <version>${org.amdatu.web.version}</version>
+ <scope>runtime</scope>
+ <type>bundle</type>
+ </dependency>
+
+
+
+
+
<!-- Auth dependencies -->
<dependency>
<groupId>org.amdatu.auth</groupId>
@@ -299,8 +320,6 @@
<type>bundle</type>
<scope>compile</scope>
</dependency>
-
-<!--
<dependency>
<groupId>org.amdatu.auth</groupId>
<artifactId>org.amdatu.auth.login.service</artifactId>
@@ -309,23 +328,26 @@
</dependency>
<dependency>
<groupId>org.amdatu.auth</groupId>
- <artifactId>org.amdatu.auth.oauth.client</artifactId>
+ <artifactId>org.amdatu.auth.useradmin.rest</artifactId>
<type>bundle</type>
<scope>compile</scope>
</dependency>
+
+<!--
<dependency>
<groupId>org.amdatu.auth</groupId>
- <artifactId>org.amdatu.auth.oauth.server</artifactId>
+ <artifactId>org.amdatu.auth.oauth.client</artifactId>
<type>bundle</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.amdatu.auth</groupId>
- <artifactId>org.amdatu.auth.useradmin.rest</artifactId>
+ <artifactId>org.amdatu.auth.oauth.server</artifactId>
<type>bundle</type>
<scope>compile</scope>
</dependency>
+
<dependency>
<groupId>org.amdatu.auth</groupId>
<artifactId>org.amdatu.auth.example.oauth.consumer</artifactId>
Modified: trunk/amdatu-auth/release-demo/src/main/assembly/bin-component.xml
==============================================================================
--- trunk/amdatu-auth/release-demo/src/main/assembly/bin-component.xml
(original)
+++ trunk/amdatu-auth/release-demo/src/main/assembly/bin-component.xml Wed Apr
25 14:16:37 2012
@@ -43,6 +43,8 @@
<include>org.amdatu.web:org.amdatu.web.tenantresolver.hostname</include>
<include>org.amdatu.web:org.amdatu.web.tenantresolver.parameter</include>
<include>org.amdatu.web:org.amdatu.web.wink</include>
+ <include>org.amdatu.web:org.amdatu.web.jsp</include>
+ <include>org.amdatu.web:org.amdatu.web.resource</include>
</includes>
<unpack>false</unpack>
<useTransitiveDependencies>false</useTransitiveDependencies>
Added:
trunk/amdatu-auth/release-demo/src/main/resources/config/org.amdatu.web.rest.wink.xml
==============================================================================
--- (empty file)
+++
trunk/amdatu-auth/release-demo/src/main/resources/config/org.amdatu.web.rest.wink.xml
Wed Apr 25 14:16:37 2012
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<MetaData xmlns="http://www.osgi.org/xmlns/metatype/v1.0.0"
filter="(|(!(org.amdatu.tenant.pid=*))(org.amdatu.tenant.pid=org.amdatu.tenant.PLATFORM))">
+ <OCD name="Amdatu Web REST Wink Configuration" id="org.amdatu.web.rest">
+ <AD id="wink.rest.path" type="STRING" cardinality="0" />
+ </OCD>
+ <Designate pid="org.amdatu.web.rest.wink" bundle="*">
+ <Object ocdref="org.amdatu.web.rest">
+ <Attribute adref="wink.rest.path">
+ <Value>/rest</Value>
+ </Attribute>
+ </Object>
+ </Designate>
+</MetaData>
\ No newline at end of file
Modified: trunk/amdatu-auth/useradmin-rest/pom.xml
==============================================================================
--- trunk/amdatu-auth/useradmin-rest/pom.xml (original)
+++ trunk/amdatu-auth/useradmin-rest/pom.xml Wed Apr 25 14:16:37 2012
@@ -103,7 +103,11 @@
<artifactId>maven-bundle-plugin</artifactId>
<configuration>
<instructions>
-
<Bundle-Activator>org.amdatu.auth.useradmin.rest.osgi.Activator</Bundle-Activator>
+ <X-MultiTenant-Version>1</X-MultiTenant-Version>
+
<X-MultiTenant-Bundle-Activator>org.amdatu.auth.useradmin.rest.osgi.Activator</X-MultiTenant-Bundle-Activator>
+ <X-MultiTenant-Binding>TENANTS</X-MultiTenant-Binding>
+
<X-MultiTenant-Scope>(|(org.amdatu.tenant.pid=%TENANTPID%)(objectClass=org.osgi.service.log.LogService)(objectClass=org.amdatu.web.rest.jaxrs.JaxRsSpi))</X-MultiTenant-Scope>
+
<Bundle-Activator>org.amdatu.tenant.adapter.MultiTenantBundleActivator</Bundle-Activator>
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
<Private-Package>org.amdatu.auth.useradmin.rest.*,org.apache.wink.common.internal.uri</Private-Package>
<Embed-Dependency>commons-lang3,json,org.amdatu.auth.tools.config,org.amdatu.auth.tools.rest,org.amdatu.osgisupport;scope=compile</Embed-Dependency>
Modified:
trunk/amdatu-auth/useradmin-rest/src/main/java/org/amdatu/auth/useradmin/rest/osgi/Activator.java
==============================================================================
---
trunk/amdatu-auth/useradmin-rest/src/main/java/org/amdatu/auth/useradmin/rest/osgi/Activator.java
(original)
+++
trunk/amdatu-auth/useradmin-rest/src/main/java/org/amdatu/auth/useradmin/rest/osgi/Activator.java
Wed Apr 25 14:16:37 2012
@@ -15,6 +15,7 @@
*/
package org.amdatu.auth.useradmin.rest.osgi;
+import org.amdatu.auth.tokenprovider.TokenProvider;
import org.amdatu.auth.useradmin.rest.service.GroupsResource;
import org.amdatu.auth.useradmin.rest.service.RolesResource;
import org.amdatu.auth.useradmin.rest.service.UsersResource;
@@ -23,7 +24,6 @@
import org.apache.felix.dm.DependencyManager;
import org.osgi.framework.BundleContext;
-import org.osgi.framework.Constants;
import org.osgi.service.cm.ManagedService;
import org.osgi.service.log.LogService;
import org.osgi.service.useradmin.UserAdmin;
@@ -43,28 +43,29 @@
@Override
public void initWithDependencies(final BundleContext context, final
DependencyManager manager) throws Exception {
- // These REST services are tenant aware. This filter ensures that
these tenant aware services
- // only adapt UserAdmin services which are also tenant aware.
- String filter = "(&(" + org.amdatu.tenant.Constants.PID_KEY + "=*)(" +
Constants.OBJECTCLASS
- + "=" + UserAdmin.class.getName() + "))";
-
// Create the users resource service and register it as REST service
- manager.add(createAdapterService(UserAdmin.class, filter)
+ manager.add(createComponent()
.setInterface(new String[] {ManagedService.class.getName(),
Object.class.getName()}, null)
.setImplementation(UsersResource.class)
.add(createServiceDependency().setService(LogService.class).setRequired(true))
+
.add(createServiceDependency().setService(UserAdmin.class).setRequired(true))
+
.add(createServiceDependency().setService(TokenProvider.class).setRequired(true))
.add(createConfigurationDependency().setPid(UsersResource.PID)));
// Create the groups resource service and register it as REST service
- manager.add(createAdapterService(UserAdmin.class, filter)
+ manager.add(createComponent()
.setInterface(Object.class.getName(), null)
.setImplementation(GroupsResource.class)
+
.add(createServiceDependency().setService(UserAdmin.class).setRequired(true))
+
.add(createServiceDependency().setService(TokenProvider.class).setRequired(true))
.add(createServiceDependency().setService(LogService.class).setRequired(true)));
// Create the groups resource service and register it as REST service
- manager.add(createAdapterService(UserAdmin.class, filter)
+ manager.add(createComponent()
.setInterface(Object.class.getName(), null)
.setImplementation(RolesResource.class)
+
.add(createServiceDependency().setService(UserAdmin.class).setRequired(true))
+
.add(createServiceDependency().setService(TokenProvider.class).setRequired(true))
.add(createServiceDependency().setService(LogService.class).setRequired(true)));
}
Modified:
trunk/amdatu-auth/useradmin-rest/src/main/java/org/amdatu/auth/useradmin/rest/service/ResourceBase.java
==============================================================================
---
trunk/amdatu-auth/useradmin-rest/src/main/java/org/amdatu/auth/useradmin/rest/service/ResourceBase.java
(original)
+++
trunk/amdatu-auth/useradmin-rest/src/main/java/org/amdatu/auth/useradmin/rest/service/ResourceBase.java
Wed Apr 25 14:16:37 2012
@@ -36,11 +36,7 @@
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
-import org.apache.felix.dm.Component;
-import org.apache.felix.dm.DependencyManager;
-import org.apache.felix.dm.ServiceDependency;
import org.json.JSONObject;
-import org.osgi.framework.Constants;
import org.osgi.framework.InvalidSyntaxException;
import org.osgi.service.log.LogService;
import org.osgi.service.useradmin.Group;
@@ -59,7 +55,6 @@
private volatile LogService m_logService;
private volatile UserAdmin m_userAdmin;
private volatile TokenProvider m_tokenProvider;
- private volatile DependencyManager m_dependencyManager;
// Disable HTTP caching in this REST interface
private static CacheControl NO_CACHE_CONTROL;
@@ -68,21 +63,6 @@
NO_CACHE_CONTROL.setNoCache(true);
}
- public void init(final Component component) {
- List<ServiceDependency> dependencies = new
ArrayList<ServiceDependency>();
-
- // Retrieve the tenant
- String tenantId = (String)
component.getServiceProperties().get(org.amdatu.tenant.Constants.PID_KEY);
-
- // Create a service dependency on the token provider for 'our' tenant
- String tenantFilter = "(&(" + org.amdatu.tenant.Constants.PID_KEY +
"=" + tenantId
- + ")(" + Constants.OBJECTCLASS + "=" +
TokenProvider.class.getName() + "))";
- dependencies.add(m_dependencyManager.createServiceDependency()
- .setService(TokenProvider.class,
tenantFilter).setRequired(true).setInstanceBound(true));
-
- component.add(dependencies);
- }
-
/**
* Returns the roles (users or groups) for the specified filter options.
*
_______________________________________________
Amdatu-commits mailing list
[email protected]
http://lists.amdatu.org/mailman/listinfo/amdatu-commits