X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.security.core%2Fsrc%2Forg%2Fargeo%2Fsecurity%2Fcore%2FSystemLoginModule.java;fp=org.argeo.security.core%2Fsrc%2Forg%2Fargeo%2Fsecurity%2Fcore%2FSystemLoginModule.java;h=a1d68b376cf5af5c6f254c7a6b3a585dad82b166;hb=f7944a8accf7b9cfc3cffe6e6f5c611cd48f592c;hp=0000000000000000000000000000000000000000;hpb=58530dd38144cda977a4851d7e6924e0c186948c;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.security.core/src/org/argeo/security/core/SystemLoginModule.java b/org.argeo.security.core/src/org/argeo/security/core/SystemLoginModule.java new file mode 100644 index 000000000..a1d68b376 --- /dev/null +++ b/org.argeo.security.core/src/org/argeo/security/core/SystemLoginModule.java @@ -0,0 +1,45 @@ +package org.argeo.security.core; + +import java.util.Map; + +import javax.security.auth.Subject; +import javax.security.auth.callback.CallbackHandler; +import javax.security.auth.login.LoginException; +import javax.security.auth.spi.LoginModule; + +import org.argeo.security.SystemAuth; + +public class SystemLoginModule implements LoginModule { + private Subject subject; + + @Override + public void initialize(Subject subject, CallbackHandler callbackHandler, + Map sharedState, Map options) { + this.subject = subject; + } + + @Override + public boolean login() throws LoginException { + // TODO check permission? + return true; + } + + @Override + public boolean commit() throws LoginException { + subject.getPrincipals().add(new SystemAuth()); + return true; + } + + @Override + public boolean abort() throws LoginException { + return true; + } + + @Override + public boolean logout() throws LoginException { + // remove ALL credentials (e.g. additional Jackrabbit credentials) + subject.getPrincipals().clear(); + return true; + } + +}