package org.argeo.cms.internal.kernel;
+import java.net.URL;
+
import javax.jcr.RepositoryException;
-import javax.security.auth.spi.LoginModule;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.argeo.security.UserAdminService;
import org.argeo.security.core.InternalAuthentication;
import org.argeo.security.core.InternalAuthenticationProvider;
-import org.argeo.security.core.ThreadedLoginModule;
import org.argeo.security.jcr.SimpleJcrSecurityModel;
import org.argeo.security.jcr.jackrabbit.JackrabbitUserAdminService;
-import org.eclipse.rap.rwt.RWT;
-import org.eclipse.swt.widgets.Display;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceRegistration;
import org.springframework.security.authentication.AnonymousAuthenticationProvider;
private final InternalAuthenticationProvider internalAuth;
private final AnonymousAuthenticationProvider anonymousAuth;
private final JackrabbitUserAdminService jackrabbitUserAdmin;
- private Login loginModule;
private ServiceRegistration<AuthenticationManager> authenticationManagerReg;
private ServiceRegistration<UserAdminService> userAdminReg;
private ServiceRegistration<UserDetailsManager> userDetailsManagerReg;
- private ServiceRegistration<LoginModule> loginModuleReg;
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(
jackrabbitUserAdmin.setRepository(node);
jackrabbitUserAdmin.setSecurityModel(new SimpleJcrSecurityModel());
jackrabbitUserAdmin.init();
-
- loginModule = new Login();
}
public void publish() {
// userAdminReg =
// bundleContext.registerService(UserDetailsService.class,
// jackrabbitUserAdmin, null);
-
- loginModuleReg = bundleContext.registerService(LoginModule.class,
- loginModule, null);
}
void destroy() {
userDetailsManagerReg.unregister();
userAdminReg.unregister();
authenticationManagerReg.unregister();
- loginModuleReg.unregister();
}
@Override
throw new CmsException("Could not authenticate " + authentication);
return auth;
}
-
- private class Login extends ThreadedLoginModule {
-
- @Override
- protected LoginModule createLoginModule() {
- SpringLoginModule springLoginModule = new SpringLoginModule();
- springLoginModule.setAuthenticationManager(NodeSecurity.this);
- if (Display.getCurrent() != null) {
-
- }
- return springLoginModule;
- }
-
- }
}