]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.cms/src/org/argeo/cms/auth/ArgeoLoginContext.java
Fix issue with session authentication in web.
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / auth / ArgeoLoginContext.java
index 3a536672a02b437a0bafa200f3736e3febe21adf..474cfcc0a1dadf2bfd546f2f35e59e7fd18ea216 100644 (file)
@@ -5,7 +5,10 @@ import javax.security.auth.callback.CallbackHandler;
 import javax.security.auth.login.LoginContext;
 import javax.security.auth.login.LoginException;
 
-/** Integrates JAAS with the Argeo platform */
+/**
+ * Integrates JAAS with the Argeo platform, by using the Argeo CMS bundle
+ * classloader as context classloader.
+ */
 public class ArgeoLoginContext extends LoginContext {
        private static ThreadLocal<ClassLoader> currentContextClassLoader = new ThreadLocal<ClassLoader>() {
                @Override
@@ -28,6 +31,15 @@ public class ArgeoLoginContext extends LoginContext {
                currentContextClassLoader.remove();
        }
 
+       public ArgeoLoginContext(String name, Subject subject)
+                       throws LoginException {
+               super(setContextClassLoaderForName(name), subject);
+               // reset current context classloader
+               Thread.currentThread().setContextClassLoader(
+                               currentContextClassLoader.get());
+               currentContextClassLoader.remove();
+       }
+
        /**
         * Set the context classloader
         *