[jboss-cvs] JBossAS SVN: r65483 - in trunk/security/src/main/org/jboss/security: plugins and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Sep 19 16:59:34 EDT 2007
Author: anil.saldhana at jboss.com
Date: 2007-09-19 16:59:34 -0400 (Wed, 19 Sep 2007)
New Revision: 65483
Modified:
trunk/security/src/main/org/jboss/security/integration/JNDIBasedSecurityManagement.java
trunk/security/src/main/org/jboss/security/integration/SecurityDomainObjectFactory.java
trunk/security/src/main/org/jboss/security/plugins/JaasSecurityDomain.java
trunk/security/src/main/org/jboss/security/plugins/JaasSecurityManager.java
trunk/security/src/main/org/jboss/security/plugins/SecurityDomainContext.java
Log:
JBAS-4738:Handle JaasSecurityDomain registration in jndi object factory
Modified: trunk/security/src/main/org/jboss/security/integration/JNDIBasedSecurityManagement.java
===================================================================
--- trunk/security/src/main/org/jboss/security/integration/JNDIBasedSecurityManagement.java 2007-09-19 20:50:07 UTC (rev 65482)
+++ trunk/security/src/main/org/jboss/security/integration/JNDIBasedSecurityManagement.java 2007-09-19 20:59:34 UTC (rev 65483)
@@ -22,6 +22,7 @@
package org.jboss.security.integration;
import java.lang.reflect.Constructor;
+import java.util.concurrent.ConcurrentHashMap;
import javax.naming.Context;
import javax.naming.InitialContext;
@@ -36,6 +37,7 @@
import org.jboss.security.auth.callback.SecurityAssociationHandler;
import org.jboss.security.identitytrust.IdentityTrustManager;
import org.jboss.security.mapping.MappingManager;
+import org.jboss.security.plugins.JaasSecurityDomain;
import org.jboss.security.plugins.SecurityDomainContext;
import org.jboss.util.CachePolicy;
import org.jboss.util.TimedCachePolicy;
@@ -49,9 +51,13 @@
* @version $Revision$
*/
public class JNDIBasedSecurityManagement implements ISecurityManagement
-{
+{
+ private static final long serialVersionUID = 1L;
+
protected static Logger log = Logger.getLogger(JNDIBasedSecurityManagement.class);
+ static ConcurrentHashMap securityMgrMap = new ConcurrentHashMap();
+
protected String BASE_CTX = SecurityConstants.JAAS_CONTEXT_ROOT;
protected String authenticationMgrClass = "org.jboss.security.plugins.JaasSecurityManager";
@@ -66,10 +72,8 @@
protected CallbackHandler callBackHandler = new SecurityAssociationHandler();
- protected String cachePolicyName = TimedCachePolicy.class.getName();
+ protected String cachePolicyName = TimedCachePolicy.class.getName();
- protected SecurityDomainContext securityDomainContext = null;
-
public JNDIBasedSecurityManagement()
{
}
@@ -188,7 +192,7 @@
public SecurityDomainContext createSecurityDomainContext(String domain) throws Exception
{
- securityDomainContext = new SecurityDomainContext(createAuthenticationManager(domain),
+ SecurityDomainContext securityDomainContext = new SecurityDomainContext(createAuthenticationManager(domain),
(CachePolicy)createObject(this.cachePolicyName));
securityDomainContext.setAuthorizationManager(createAuthorizationManager(domain));
@@ -197,11 +201,28 @@
securityDomainContext.setMappingMgr(createMappingManager(domain));
return securityDomainContext;
}
-
- public SecurityDomainContext getSecurityDomainContext()
+
+ /**
+ * Legacy registration of JaasSecurityDomain instance with the JNDI
+ * Object Factory internal hashmap
+ * @param domain
+ * @param jsd
+ * @throws Exception
+ */
+ public void registerJaasSecurityDomainInstance(String domain, JaasSecurityDomain jsd) throws Exception
{
- return securityDomainContext;
- }
+ SecurityDomainContext sdc = (SecurityDomainContext) securityMgrMap.get(domain);
+ if(sdc != null)
+ {
+ sdc.setAuthenticationManager(jsd);
+ }
+ else
+ {
+ sdc = createSecurityDomainContext(domain);
+ sdc.setAuthenticationManager(jsd);
+ }
+ securityMgrMap.put(domain, sdc);
+ }
private Object lookUpJNDI(String ctxName)
{
Modified: trunk/security/src/main/org/jboss/security/integration/SecurityDomainObjectFactory.java
===================================================================
--- trunk/security/src/main/org/jboss/security/integration/SecurityDomainObjectFactory.java 2007-09-19 20:50:07 UTC (rev 65482)
+++ trunk/security/src/main/org/jboss/security/integration/SecurityDomainObjectFactory.java 2007-09-19 20:59:34 UTC (rev 65483)
@@ -25,7 +25,6 @@
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.Hashtable;
-import java.util.concurrent.ConcurrentHashMap;
import javax.naming.Context;
import javax.naming.InitialContext;
@@ -49,8 +48,6 @@
public class SecurityDomainObjectFactory
implements InvocationHandler, ObjectFactory
{
- private static ConcurrentHashMap securityMgrMap = new ConcurrentHashMap();
-
private JNDIBasedSecurityManagement securityManagement = new JNDIBasedSecurityManagement();
public void setSecurityManagement(JNDIBasedSecurityManagement sm)
@@ -100,7 +97,7 @@
name = (Name)args[0];
securityDomain = name.get(0);
Object val = (SecurityDomainContext)args[1];
- this.securityMgrMap.put(securityDomain, val);
+ JNDIBasedSecurityManagement.securityMgrMap.put(securityDomain, val);
return obj;
}
if( methodName.equals("lookup") == false )
@@ -125,11 +122,11 @@
private SecurityDomainContext lookupSecurityDomain(String securityDomain)
throws Exception
{
- SecurityDomainContext sdc = (SecurityDomainContext) securityMgrMap.get(securityDomain);
+ SecurityDomainContext sdc = (SecurityDomainContext) JNDIBasedSecurityManagement.securityMgrMap.get(securityDomain);
if( sdc == null )
{
sdc = securityManagement.createSecurityDomainContext(securityDomain);
- securityMgrMap.put(securityDomain, sdc);
+ JNDIBasedSecurityManagement.securityMgrMap.put(securityDomain, sdc);
}
return sdc;
}
Modified: trunk/security/src/main/org/jboss/security/plugins/JaasSecurityDomain.java
===================================================================
--- trunk/security/src/main/org/jboss/security/plugins/JaasSecurityDomain.java 2007-09-19 20:50:07 UTC (rev 65482)
+++ trunk/security/src/main/org/jboss/security/plugins/JaasSecurityDomain.java 2007-09-19 20:59:34 UTC (rev 65483)
@@ -45,9 +45,11 @@
import javax.security.auth.callback.CallbackHandler;
import org.jboss.mx.util.MBeanServerLocator;
+import org.jboss.security.ISecurityManagement;
import org.jboss.security.SecurityDomain;
import org.jboss.crypto.CryptoUtil;
import org.jboss.security.auth.callback.SecurityAssociationHandler;
+import org.jboss.security.integration.JNDIBasedSecurityManagement;
/** The JaasSecurityDomain is an extension of JaasSecurityManager that addes
the notion of a KeyStore, and JSSE KeyManagerFactory and TrustManagerFactory
@@ -151,6 +153,9 @@
private char[] trustStorePassword;
private URL trustStoreURL;
private TrustManagerFactory trustMgr;
+
+ /** Specify the SecurityManagement instance */
+ private ISecurityManagement securityManagement = new JNDIBasedSecurityManagement();
/** Creates a default JaasSecurityDomain for with a securityDomain
name of 'other'.
@@ -306,7 +311,17 @@
public String getName()
{
return "JaasSecurityDomain(" + getSecurityDomain() + ")";
+ }
+
+ public ISecurityManagement getSecurityManagement()
+ {
+ return securityManagement;
}
+
+ public void setSecurityManagement(ISecurityManagement securityManagement)
+ {
+ this.securityManagement = securityManagement;
+ }
/** Encrypt the secret using the cipherKey.
* @param secret - the plaintext secret to encrypt
@@ -402,6 +417,12 @@
String[] signature = new String[]{"java.lang.String", "org.jboss.security.SecurityDomain"};
server.invoke(managerServiceName, "registerSecurityDomain", params, signature);
}
+ //Register yourself with the security management
+ if(securityManagement instanceof JNDIBasedSecurityManagement)
+ {
+ JNDIBasedSecurityManagement jbs = (JNDIBasedSecurityManagement) securityManagement;
+ jbs.registerJaasSecurityDomainInstance(getSecurityDomain(), this);
+ }
}
protected void stopService()
Modified: trunk/security/src/main/org/jboss/security/plugins/JaasSecurityManager.java
===================================================================
--- trunk/security/src/main/org/jboss/security/plugins/JaasSecurityManager.java 2007-09-19 20:50:07 UTC (rev 65482)
+++ trunk/security/src/main/org/jboss/security/plugins/JaasSecurityManager.java 2007-09-19 20:59:34 UTC (rev 65483)
@@ -21,30 +21,33 @@
*/
package org.jboss.security.plugins;
-import java.io.Serializable;
import java.lang.reflect.Method;
import java.lang.reflect.UndeclaredThrowableException;
import java.security.Principal;
import java.security.acl.Group;
import java.util.Arrays;
-import java.util.Enumeration;
+import java.util.Enumeration;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
+
import javax.security.auth.Subject;
import javax.security.auth.callback.CallbackHandler;
import javax.security.auth.login.LoginContext;
import javax.security.auth.login.LoginException;
import javax.security.auth.message.MessageInfo;
-import org.jboss.logging.Logger;
-import org.jboss.security.AuthorizationManager;
-import org.jboss.security.RealmMapping;
+import org.jboss.logging.Logger;
+import org.jboss.security.AuthenticationManager;
+import org.jboss.security.AuthorizationManager;
+import org.jboss.security.ISecurityManagement;
+import org.jboss.security.RealmMapping;
import org.jboss.security.SecurityConstants;
import org.jboss.security.SecurityContext;
import org.jboss.security.SecurityUtil;
import org.jboss.security.SubjectSecurityManager;
import org.jboss.security.auth.callback.SecurityAssociationHandler;
+import org.jboss.security.integration.JNDIBasedSecurityManagement;
import org.jboss.system.ServiceMBeanSupport;
import org.jboss.util.CachePolicy;
import org.jboss.util.TimedCachePolicy;
@@ -65,7 +68,7 @@
@version $Revision: 62860 $
*/
public class JaasSecurityManager extends ServiceMBeanSupport
- implements SubjectSecurityManager, RealmMapping, Serializable
+ implements SubjectSecurityManager, RealmMapping
{
/** The authentication cache object.
*/
Modified: trunk/security/src/main/org/jboss/security/plugins/SecurityDomainContext.java
===================================================================
--- trunk/security/src/main/org/jboss/security/plugins/SecurityDomainContext.java 2007-09-19 20:50:07 UTC (rev 65482)
+++ trunk/security/src/main/org/jboss/security/plugins/SecurityDomainContext.java 2007-09-19 20:59:34 UTC (rev 65483)
@@ -123,6 +123,11 @@
return realmMapping;
}
+ public void setAuthenticationManager(AuthenticationManager aum)
+ {
+ this.securityMgr = aum;
+ }
+
public void setAuthorizationManager(AuthorizationManager am)
{
this.authorizationMgr = am;
@@ -132,6 +137,11 @@
{
return authorizationMgr;
}
+
+ public void setAuthenticationCache(CachePolicy cp)
+ {
+ this.authenticationCache = cp;
+ }
public CachePolicy getAuthenticationCache()
{
More information about the jboss-cvs-commits
mailing list