[jboss-cvs] Picketbox SVN: r327 - trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Apr 27 22:58:24 EDT 2012
Author: sguilhen at redhat.com
Date: 2012-04-27 22:58:08 -0400 (Fri, 27 Apr 2012)
New Revision: 327
Modified:
trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/JBossServerAuthConfig.java
trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/SecurityActions.java
Log:
check if a jboss module has been specified when instantiating the JASPI auth modules
Modified: trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/JBossServerAuthConfig.java
===================================================================
--- trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/JBossServerAuthConfig.java 2012-04-24 02:22:19 UTC (rev 326)
+++ trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/JBossServerAuthConfig.java 2012-04-28 02:58:08 UTC (rev 327)
@@ -48,6 +48,8 @@
import org.jboss.security.config.ApplicationPolicy;
import org.jboss.security.config.ControlFlag;
import org.jboss.security.config.SecurityConfiguration;
+import org.jboss.security.plugins.ClassLoaderLocator;
+import org.jboss.security.plugins.ClassLoaderLocatorFactory;
//$Id$
@@ -136,6 +138,17 @@
{
JASPIAuthenticationInfo jai = (JASPIAuthenticationInfo)bai;
AuthModuleEntry[] amearr = jai.getAuthModuleEntry();
+
+ // establish the module classloader if a jboss-module has been specified.
+ ClassLoader moduleCL = null;
+ String jbossModule = jai.getJBossModuleName();
+ if (jbossModule != null && !jbossModule.isEmpty())
+ {
+ ClassLoaderLocator locator = ClassLoaderLocatorFactory.get();
+ if (locator != null)
+ moduleCL = locator.get(jbossModule);
+ }
+
for(AuthModuleEntry ame: amearr)
{
if(ame.getLoginModuleStackHolderName() != null)
@@ -144,7 +157,7 @@
{
mapOptionsByName.put(ame.getAuthModuleName(), ame.getOptions());
controlFlags.add(ame.getControlFlag());
- ServerAuthModule sam = this.createSAM(ame.getAuthModuleName(),
+ ServerAuthModule sam = this.createSAM(moduleCL, ame.getAuthModuleName(),
ame.getLoginModuleStackHolderName());
Map options = new HashMap();
@@ -163,7 +176,7 @@
{
mapOptionsByName.put(ame.getAuthModuleName(), ame.getOptions());
controlFlags.add(ame.getControlFlag());
- ServerAuthModule sam = this.createSAM(ame.getAuthModuleName());
+ ServerAuthModule sam = this.createSAM(moduleCL, ame.getAuthModuleName());
Map options = new HashMap();
sam.initialize(null, null, callbackHandler, options);
@@ -224,19 +237,19 @@
}
@SuppressWarnings({"rawtypes", "unchecked"})
- private ServerAuthModule createSAM(String name )
+ private ServerAuthModule createSAM(ClassLoader moduleCL, String name )
throws Exception
{
- Class clazz = SecurityActions.getContextClassLoader().loadClass(name);
+ Class clazz = SecurityActions.loadClass(moduleCL, name);
Constructor ctr = clazz.getConstructor(new Class[0]);
return (ServerAuthModule) ctr.newInstance(new Object[0]);
}
@SuppressWarnings({"unchecked", "rawtypes"})
- private ServerAuthModule createSAM(String name, String lmshName )
+ private ServerAuthModule createSAM(ClassLoader moduleCL, String name, String lmshName )
throws Exception
{
- Class clazz = SecurityActions.getContextClassLoader().loadClass(name);
+ Class clazz = SecurityActions.loadClass(moduleCL, name);
Constructor ctr = clazz.getConstructor(new Class[]{String.class});
return (ServerAuthModule) ctr.newInstance(new Object[]{lmshName});
}
Modified: trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/SecurityActions.java
===================================================================
--- trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/SecurityActions.java 2012-04-24 02:22:19 UTC (rev 326)
+++ trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/SecurityActions.java 2012-04-28 02:58:08 UTC (rev 327)
@@ -23,6 +23,8 @@
import java.security.AccessController;
import java.security.PrivilegedAction;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
import org.jboss.security.SecurityContext;
import org.jboss.security.SecurityContextAssociation;
@@ -36,17 +38,17 @@
* @version $Revision$
*/
class SecurityActions
-{
+{
static ClassLoader getContextClassLoader()
{
return AccessController.doPrivileged(new PrivilegedAction<ClassLoader>()
- {
+ {
public ClassLoader run()
- {
+ {
return Thread.currentThread().getContextClassLoader();
}
- });
-
+ });
+
}
static SecurityContext getSecurityContext()
@@ -55,9 +57,56 @@
{
public SecurityContext run()
- {
+ {
return SecurityContextAssociation.getSecurityContext();
}
- });
+ });
}
+
+ static Class<?> loadClass(final ClassLoader cl, final String name) throws PrivilegedActionException
+ {
+ return AccessController.doPrivileged(new PrivilegedExceptionAction<Class<?>>()
+ {
+ public Class<?> run() throws PrivilegedActionException
+ {
+ if (cl == null)
+ {
+ return loadClass(name);
+ }
+ try
+ {
+ return cl.loadClass(name);
+ }
+ catch (Exception ignore)
+ {
+ return loadClass(name);
+ }
+ }
+ });
+ }
+
+ static Class<?> loadClass(final String name) throws PrivilegedActionException
+ {
+ return AccessController.doPrivileged(new PrivilegedExceptionAction<Class<?>>()
+ {
+ public Class<?> run() throws PrivilegedActionException
+ {
+ try
+ {
+ return getClass().getClassLoader().loadClass(name);
+ }
+ catch (Exception ignore)
+ {
+ try
+ {
+ return getContextClassLoader().loadClass(name);
+ }
+ catch (Exception e)
+ {
+ throw new PrivilegedActionException(e);
+ }
+ }
+ }
+ });
+ }
}
More information about the jboss-cvs-commits
mailing list