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();
31 public ArgeoLoginContext(String name
, Subject subject
)
32 throws LoginException
{
33 super(setContextClassLoaderForName(name
), subject
);
34 // reset current context classloader
35 Thread
.currentThread().setContextClassLoader(
36 currentContextClassLoader
.get());
37 currentContextClassLoader
.remove();
41 * Set the context classloader
43 * @return the passed name, in order to chain calls in the constructor
45 private static String
setContextClassLoaderForName(String name
) {
46 // store current context class loader;
47 currentContextClassLoader
.get();
48 Thread
.currentThread().setContextClassLoader(
49 ArgeoLoginContext
.class.getClassLoader());
54 public void login() throws LoginException
{
59 public void logout() throws LoginException
{