]> git.argeo.org Git - gpl/argeo-jcr.git/blobdiff - org.argeo.cms.jcr/src/org/argeo/security/jackrabbit/ArgeoAuthContext.java
Code move and initial build
[gpl/argeo-jcr.git] / org.argeo.cms.jcr / src / org / argeo / security / jackrabbit / ArgeoAuthContext.java
diff --git a/org.argeo.cms.jcr/src/org/argeo/security/jackrabbit/ArgeoAuthContext.java b/org.argeo.cms.jcr/src/org/argeo/security/jackrabbit/ArgeoAuthContext.java
new file mode 100644 (file)
index 0000000..d679c45
--- /dev/null
@@ -0,0 +1,37 @@
+package org.argeo.security.jackrabbit;
+
+import javax.security.auth.Subject;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.login.LoginContext;
+import javax.security.auth.login.LoginException;
+
+import org.apache.jackrabbit.core.security.authentication.AuthContext;
+
+/** Wraps a regular {@link LoginContext}, using the proper class loader. */
+class ArgeoAuthContext implements AuthContext {
+       private LoginContext lc;
+
+       public ArgeoAuthContext(String appName, Subject subject, CallbackHandler callbackHandler) {
+               try {
+                       lc = new LoginContext(appName, subject, callbackHandler);
+               } catch (LoginException e) {
+                       throw new IllegalStateException("Cannot configure Jackrabbit login context", e);
+               }
+       }
+
+       @Override
+       public void login() throws LoginException {
+               lc.login();
+       }
+
+       @Override
+       public Subject getSubject() {
+               return lc.getSubject();
+       }
+
+       @Override
+       public void logout() throws LoginException {
+               lc.logout();
+       }
+
+}