Add single user login module
authorMathieu Baudier <mbaudier@argeo.org>
Sun, 22 Nov 2015 16:48:03 +0000 (16:48 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Sun, 22 Nov 2015 16:48:03 +0000 (16:48 +0000)
git-svn-id: https://svn.argeo.org/commons/trunk@8585 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.cms/src/org/argeo/cms/auth/SingleUserLoginModule.java [new file with mode: 0644]
org.argeo.cms/src/org/argeo/cms/internal/kernel/jaas.cfg

diff --git a/org.argeo.cms/src/org/argeo/cms/auth/SingleUserLoginModule.java b/org.argeo.cms/src/org/argeo/cms/auth/SingleUserLoginModule.java
new file mode 100644 (file)
index 0000000..9b65f22
--- /dev/null
@@ -0,0 +1,55 @@
+package org.argeo.cms.auth;
+
+import java.security.Principal;
+import java.util.Map;
+import java.util.Set;
+
+import javax.security.auth.Subject;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.login.LoginException;
+import javax.security.auth.spi.LoginModule;
+import javax.security.auth.x500.X500Principal;
+
+import org.apache.jackrabbit.core.security.SecurityConstants;
+import org.apache.jackrabbit.core.security.principal.AdminPrincipal;
+import org.argeo.cms.internal.auth.ImpliedByPrincipal;
+
+public class SingleUserLoginModule implements LoginModule, AuthConstants {
+       private Subject subject;
+
+       @Override
+       public void initialize(Subject subject, CallbackHandler callbackHandler,
+                       Map<String, ?> sharedState, Map<String, ?> options) {
+               this.subject = subject;
+       }
+
+       @Override
+       public boolean login() throws LoginException {
+               return true;
+       }
+
+       @Override
+       public boolean commit() throws LoginException {
+               String username = System.getProperty("user.name");
+               X500Principal principal = new X500Principal("uid=" + username
+                               + ",dc=localhost,dc=localdomain");
+               Set<Principal> principals = subject.getPrincipals();
+               principals.add(principal);
+               principals.add(new ImpliedByPrincipal(ROLE_ADMIN, principal));
+               // Jackrabbit
+               principals.add(new AdminPrincipal(SecurityConstants.ADMIN_ID));
+               return true;
+       }
+
+       @Override
+       public boolean abort() throws LoginException {
+               return true;
+       }
+
+       @Override
+       public boolean logout() throws LoginException {
+               // TODO Auto-generated method stub
+               return true;
+       }
+
+}
index e5e3be5cdfcbcb60432452dbad765e8da485b928..61fc28ad0218ee16758f7a5903aaedf171a601a4 100644 (file)
@@ -24,8 +24,7 @@ KEYRING {
 
 SINGLE_USER {
     com.sun.security.auth.module.UnixLoginModule requisite;
-    org.argeo.cms.internal.auth.SingleUserLoginModule requisite;
-    org.springframework.security.authentication.jaas.SecurityContextLoginModule requisite;
+    org.argeo.cms.auth.SingleUserLoginModule requisite;
 };
 
 Jackrabbit {