X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Finternal%2Fkernel%2FNodeSecurity.java;h=be94cd5df7f3f6a716e68962ae38ff2ce75461e6;hb=ad3f61eafc04c60a725c761b3908c15027986c8c;hp=7c176ea89552fe1bd8a414be6c87d81a7c03a707;hpb=63446804f4954bfedd50d8c692bde0fab13aa1ec;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/NodeSecurity.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/NodeSecurity.java index 7c176ea89..be94cd5df 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/NodeSecurity.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/NodeSecurity.java @@ -1,5 +1,7 @@ package org.argeo.cms.internal.kernel; +import java.net.URL; + import javax.jcr.RepositoryException; import org.apache.commons.logging.Log; @@ -28,14 +30,22 @@ class NodeSecurity implements AuthenticationManager { private final InternalAuthenticationProvider internalAuth; private final AnonymousAuthenticationProvider anonymousAuth; - private final JackrabbitUserAdminService jackrabbitUserAdmin; + private final JackrabbitUserAdminService userAdminService; + // private final JcrUserAdmin userAdmin; private ServiceRegistration authenticationManagerReg; - private ServiceRegistration userAdminReg; + private ServiceRegistration userAdminServiceReg; private ServiceRegistration userDetailsManagerReg; + // private ServiceRegistration userAdminReg; + public NodeSecurity(BundleContext bundleContext, JackrabbitNode node) throws RepositoryException { + URL url = getClass().getClassLoader().getResource( + KernelConstants.JAAS_CONFIG); + System.setProperty("java.security.auth.login.config", + url.toExternalForm()); + this.bundleContext = bundleContext; internalAuth = new InternalAuthenticationProvider( @@ -44,34 +54,36 @@ class NodeSecurity implements AuthenticationManager { KernelConstants.DEFAULT_SECURITY_KEY); // user admin - jackrabbitUserAdmin = new JackrabbitUserAdminService(); - jackrabbitUserAdmin.setRepository(node); - jackrabbitUserAdmin.setSecurityModel(new SimpleJcrSecurityModel()); - jackrabbitUserAdmin.init(); + userAdminService = new JackrabbitUserAdminService(); + userAdminService.setRepository(node); + userAdminService.setSecurityModel(new SimpleJcrSecurityModel()); + userAdminService.init(); + // userAdmin = new JcrUserAdmin(bundleContext); + // userAdmin.setUserAdminService(userAdminService); } public void publish() { authenticationManagerReg = bundleContext.registerService( AuthenticationManager.class, this, null); - userAdminReg = bundleContext.registerService(UserAdminService.class, - jackrabbitUserAdmin, null); + userAdminServiceReg = bundleContext.registerService( + UserAdminService.class, userAdminService, null); userDetailsManagerReg = bundleContext.registerService( - UserDetailsManager.class, jackrabbitUserAdmin, null); - // userAdminReg = - // bundleContext.registerService(UserDetailsService.class, - // jackrabbitUserAdmin, null); + UserDetailsManager.class, userAdminService, null); + // userAdminReg = bundleContext.registerService(UserAdmin.class, + // userAdmin, null); } void destroy() { try { - jackrabbitUserAdmin.destroy(); + userAdminService.destroy(); } catch (RepositoryException e) { log.error("Error while destroying Jackrabbit useradmin"); } userDetailsManagerReg.unregister(); - userAdminReg.unregister(); + userAdminServiceReg.unregister(); authenticationManagerReg.unregister(); + // userAdminReg.unregister(); } @Override @@ -83,7 +95,7 @@ class NodeSecurity implements AuthenticationManager { else if (authentication instanceof AnonymousAuthenticationToken) auth = anonymousAuth.authenticate(authentication); else if (authentication instanceof UsernamePasswordAuthenticationToken) - auth = jackrabbitUserAdmin.authenticate(authentication); + auth = userAdminService.authenticate(authentication); if (auth == null) throw new CmsException("Could not authenticate " + authentication); return auth;