1 package org
.argeo
.cms
.auth
;
3 import javax
.security
.auth
.Subject
;
4 import javax
.security
.auth
.callback
.CallbackHandler
;
5 import javax
.security
.auth
.login
.LoginContext
;
6 import javax
.security
.auth
.login
.LoginException
;
8 /** Integrates JAAS with the Argeo platform */
9 public class ArgeoLoginContext
extends LoginContext
{
10 private static ThreadLocal
<ClassLoader
> currentContextClassLoader
= new ThreadLocal
<ClassLoader
>() {
12 protected ClassLoader
initialValue() {
13 return Thread
.currentThread().getContextClassLoader();
17 public void set(ClassLoader value
) {
18 throw new IllegalAccessError("Current class loader is read-only");
22 public ArgeoLoginContext(String name
, Subject subject
,
23 CallbackHandler callbackHandler
) throws LoginException
{
24 super(setContextClassLoaderForName(name
), subject
, callbackHandler
);
25 // reset current context classloader
26 Thread
.currentThread().setContextClassLoader(
27 currentContextClassLoader
.get());
28 currentContextClassLoader
.remove();
32 * Set the context classloader
34 * @return the passed name, in order to chain calls in the constructor
36 private static String
setContextClassLoaderForName(String name
) {
37 // store current context class loader;
38 currentContextClassLoader
.get();
39 Thread
.currentThread().setContextClassLoader(
40 ArgeoLoginContext
.class.getClassLoader());
45 public void login() throws LoginException
{
50 public void logout() throws LoginException
{