From: Mathieu Baudier Date: Wed, 30 Mar 2011 12:27:07 +0000 (+0000) Subject: Improve inital Jackrabbit login X-Git-Tag: argeo-commons-2.1.30~1296 X-Git-Url: http://git.argeo.org/?a=commitdiff_plain;h=01be94b42cb907c24a6d1112e326600f1fbeaab1;p=lgpl%2Fargeo-commons.git Improve inital Jackrabbit login git-svn-id: https://svn.argeo.org/commons/trunk@4404 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- diff --git a/security/modules/org.argeo.security.dao.jackrabbit/META-INF/spring/jcrsecuritydao-osgi.xml b/security/modules/org.argeo.security.dao.jackrabbit/META-INF/spring/jcrsecuritydao-osgi.xml index 21d316f16..2797fd975 100644 --- a/security/modules/org.argeo.security.dao.jackrabbit/META-INF/spring/jcrsecuritydao-osgi.xml +++ b/security/modules/org.argeo.security.dao.jackrabbit/META-INF/spring/jcrsecuritydao-osgi.xml @@ -16,7 +16,7 @@ unbind-method="unregister" /> + filter="(argeo.jcr.repository.alias=${org.argeo.node.repo.alias})" cardinality="0..1"> diff --git a/security/modules/org.argeo.security.dao.jackrabbit/security.properties b/security/modules/org.argeo.security.dao.jackrabbit/security.properties index ae7aa8725..9397ba9de 100644 --- a/security/modules/org.argeo.security.dao.jackrabbit/security.properties +++ b/security/modules/org.argeo.security.dao.jackrabbit/security.properties @@ -1 +1,2 @@ argeo.security.systemKey=argeo +org.argeo.node.repo.alias=node diff --git a/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/core/OsAuthenticationProvider.java b/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/core/OsAuthenticationProvider.java index fa70489fc..524e73f8f 100644 --- a/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/core/OsAuthenticationProvider.java +++ b/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/core/OsAuthenticationProvider.java @@ -1,18 +1,14 @@ package org.argeo.security.core; -import java.security.AccessController; import java.util.ArrayList; import java.util.List; -import javax.security.auth.Subject; - import org.argeo.security.OsAuthenticationToken; import org.springframework.security.Authentication; import org.springframework.security.AuthenticationException; import org.springframework.security.GrantedAuthority; import org.springframework.security.GrantedAuthorityImpl; import org.springframework.security.providers.AuthenticationProvider; -import org.springframework.security.providers.UsernamePasswordAuthenticationToken; /** Validates an OS authentication. */ public class OsAuthenticationProvider implements AuthenticationProvider { @@ -24,22 +20,8 @@ public class OsAuthenticationProvider implements AuthenticationProvider { public Authentication authenticate(Authentication authentication) throws AuthenticationException { - final OsAuthenticationToken oat; - // if (authentication instanceof UsernamePasswordAuthenticationToken) { - // Subject subject = Subject.getSubject(AccessController.getContext()); - // if (subject == null) - // return null; - // oat = new OsAuthenticationToken(); - // } else - if (authentication instanceof OsAuthenticationToken) { - oat = (OsAuthenticationToken) authentication; - } else { + if (!(authentication instanceof OsAuthenticationToken)) return null; - } - - // not OS authenticated -// if (oat.getUser() == null) -// return null; List auths = new ArrayList(); auths.add(new GrantedAuthorityImpl(osUserRole)); @@ -59,6 +41,10 @@ public class OsAuthenticationProvider implements AuthenticationProvider { this.osUserRole = osUserRole; } + public void setUserRole(String userRole) { + this.userRole = userRole; + } + public void setAdminRole(String adminRole) { this.adminRole = adminRole; } diff --git a/server/modules/org.argeo.node.repo.jackrabbit/META-INF/spring/noderepo-osgi.xml b/server/modules/org.argeo.node.repo.jackrabbit/META-INF/spring/noderepo-osgi.xml index c926720f4..cc38a3451 100644 --- a/server/modules/org.argeo.node.repo.jackrabbit/META-INF/spring/noderepo-osgi.xml +++ b/server/modules/org.argeo.node.repo.jackrabbit/META-INF/spring/noderepo-osgi.xml @@ -9,7 +9,7 @@ http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd"> - + diff --git a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/JackrabbitContainer.java b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/JackrabbitContainer.java index 6f50f7358..0ad12327f 100644 --- a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/JackrabbitContainer.java +++ b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/JackrabbitContainer.java @@ -90,6 +90,12 @@ public class JackrabbitContainer implements InitializingBean, DisposableBean, private Credentials adminCredentials; public void afterPropertiesSet() throws Exception { + if (repository != null) { + // we are just wrapping another repository + importNodeTypeDefinitions(repository); + return; + } + // remote repository if (uri != null && !uri.trim().equals("")) { Map params = new HashMap(); @@ -171,9 +177,11 @@ public class JackrabbitContainer implements InitializingBean, DisposableBean, protected void importNodeTypeDefinitions(final Repository repository) { final Credentials credentialsToUse; if (systemExecutor == null) { - if (adminCredentials == null) - throw new ArgeoException( - "No system executor or admin credentials found"); + if (adminCredentials == null) { + log.error("No system executor or admin credentials found," + + " cannot import node types"); + return; + } credentialsToUse = adminCredentials; } else { credentialsToUse = null; @@ -371,4 +379,8 @@ public class JackrabbitContainer implements InitializingBean, DisposableBean, this.adminCredentials = adminCredentials; } + public void setRepository(Repository repository) { + this.repository = repository; + } + }