[jboss-cvs] JBossAS SVN: r106433 - in trunk/security/src/main/java/org/jboss/security: plugins and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Jul 5 15:27:38 EDT 2010
Author: mmoyses
Date: 2010-07-05 15:27:38 -0400 (Mon, 05 Jul 2010)
New Revision: 106433
Modified:
trunk/security/src/main/java/org/jboss/security/integration/JNDIBasedSecurityManagement.java
trunk/security/src/main/java/org/jboss/security/plugins/JaasSecurityManagerService.java
Log:
JBAS-8025: fix setting of custom SecurityManager and CallbackHandler classes
Modified: trunk/security/src/main/java/org/jboss/security/integration/JNDIBasedSecurityManagement.java
===================================================================
--- trunk/security/src/main/java/org/jboss/security/integration/JNDIBasedSecurityManagement.java 2010-07-05 18:51:20 UTC (rev 106432)
+++ trunk/security/src/main/java/org/jboss/security/integration/JNDIBasedSecurityManagement.java 2010-07-05 19:27:38 UTC (rev 106433)
@@ -233,6 +233,7 @@
public void setAuthenticationMgrClass(String authenticationMgrClass)
{
this.authenticationMgrClass = authenticationMgrClass;
+ securityMgrMap.clear();
}
@ManagementProperty(use = {ViewUse.CONFIGURATION},
Modified: trunk/security/src/main/java/org/jboss/security/plugins/JaasSecurityManagerService.java
===================================================================
--- trunk/security/src/main/java/org/jboss/security/plugins/JaasSecurityManagerService.java 2010-07-05 18:51:20 UTC (rev 106432)
+++ trunk/security/src/main/java/org/jboss/security/plugins/JaasSecurityManagerService.java 2010-07-05 19:27:38 UTC (rev 106433)
@@ -49,6 +49,7 @@
import javax.naming.StringRefAddr;
import javax.naming.spi.ObjectFactory;
import javax.security.auth.Subject;
+import javax.security.auth.callback.CallbackHandler;
import javax.security.jacc.PolicyContext;
import org.jboss.logging.Logger;
@@ -127,6 +128,8 @@
/** Frequency of the thread cleaning the authentication cache of expired entries */
private static int defaultCacheFlushPeriod = 60*60;
+ private static JNDIBasedSecurityManagement securityManagement = SecurityConstantsBridge.getSecurityManagement();
+
static
{
// Get a log interface, required for some statics below
@@ -160,7 +163,7 @@
throws ClassNotFoundException, ClassCastException
{
securityMgrClassName = className;
- ClassLoader loader = Thread.currentThread().getContextClassLoader();
+ ClassLoader loader = getContextClassLoader();
securityMgrClass = loader.loadClass(securityMgrClassName);
if( AuthenticationManager.class.isAssignableFrom(securityMgrClass) == false )
throw new ClassCastException(securityMgrClass+" does not implement "+AuthenticationManager.class);
@@ -173,7 +176,7 @@
throws ClassNotFoundException
{
securityProxyFactoryClassName = className;
- ClassLoader loader = Thread.currentThread().getContextClassLoader();
+ ClassLoader loader = getContextClassLoader();
securityProxyFactoryClass = loader.loadClass(securityProxyFactoryClassName);
}
@@ -192,7 +195,7 @@
throws ClassNotFoundException
{
callbackHandlerClassName = className;
- ClassLoader loader = Thread.currentThread().getContextClassLoader();
+ ClassLoader loader = getContextClassLoader();
callbackHandlerClass = loader.loadClass(callbackHandlerClassName);
}
@@ -496,7 +499,14 @@
return null;
}
});
+ CallbackHandler callbackHandler = null;
+ callbackHandler = (CallbackHandler) callbackHandlerClass.newInstance();
+ if (callbackHandler != null)
+ securityManagement.setCallBackHandler(callbackHandler);
}
+
+ // Set AuthenticationManager class
+ securityManagement.setAuthenticationMgrClass(securityMgrClassName);
// Register the Principal property editor
PropertyEditorManager.registerEditor(Principal.class, PrincipalEditor.class);
@@ -764,4 +774,15 @@
return cachePolicy;
}
}
+
+ static ClassLoader getContextClassLoader()
+ {
+ return AccessController.doPrivileged(new PrivilegedAction<ClassLoader>()
+ {
+ public ClassLoader run()
+ {
+ return Thread.currentThread().getContextClassLoader();
+ }
+ });
+ }
}
More information about the jboss-cvs-commits
mailing list