User: starksm
Date: 01/09/25 23:36:35
Modified: src/main/org/jboss/security/plugins Tag: Branch_2_4
JaasSecurityManager.java
JaasSecurityManagerService.java
JaasSecurityManagerServiceMBean.java
Added: src/main/org/jboss/security/plugins Tag: Branch_2_4
JaasSecurityDomain.java
JaasSecurityDomainMBean.java
Log:
Add SecurityDomain implementation
Revision Changes Path
No revision
No revision
1.7.2.5 +42 -8
jbosssx/src/main/org/jboss/security/plugins/JaasSecurityManager.java
Index: JaasSecurityManager.java
===================================================================
RCS file:
/cvsroot/jboss/jbosssx/src/main/org/jboss/security/plugins/JaasSecurityManager.java,v
retrieving revision 1.7.2.4
retrieving revision 1.7.2.5
diff -u -r1.7.2.4 -r1.7.2.5
--- JaasSecurityManager.java 2001/07/27 03:38:32 1.7.2.4
+++ JaasSecurityManager.java 2001/09/26 06:36:35 1.7.2.5
@@ -10,6 +10,7 @@
import java.io.Serializable;
import java.util.Arrays;
import java.util.Enumeration;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
@@ -53,8 +54,8 @@
@see #doesUserHaveRole(Principal, Set)
@author <a href="[EMAIL PROTECTED]">Oleg Nitz</a>
- @author [EMAIL PROTECTED]
- @version $Revision: 1.7.2.4 $
+ @author [EMAIL PROTECTED]
+ @version $Revision: 1.7.2.5 $
*/
public class JaasSecurityManager implements SubjectSecurityManager, RealmMapping
{
@@ -71,9 +72,6 @@
/** The current authenticate()d subject.
*/
private static ThreadLocal activeSubject = new ThreadLocal();
- /** The log4j category for the security manager domain
- */
- private Category log;
/** The name of the domain this instance is securing. It is used as
the appName into the SecurityPolicy.
*/
@@ -90,6 +88,9 @@
securityDomain name.
*/
private SecurityAssociationHandler handler = new SecurityAssociationHandler();
+ /** The log4j category for the security manager domain
+ */
+ protected Category log;
/** Get the currently authenticated Subject in securityDomain.
@return The Subject for securityDomain if one exists, false otherwise.
@@ -142,7 +143,8 @@
public JaasSecurityManager(String securityDomain)
{
this.securityDomain = securityDomain;
- this.log = Category.getInstance(getClass().getName()+"."+securityDomain);
+ String categoryName = getClass().getName()+"#"+securityDomain;
+ this.log = Category.getInstance(categoryName);
try
{ // Try to get the SecurityPolicy from the JAAS Policy class
securityPolicy = (SecurityPolicy) Policy.getPolicy();
@@ -181,6 +183,7 @@
{
return securityDomain;
}
+
/** Get the currently authenticated Subject. This is a thread local
property shared across all JaasSecurityManager instances.
@return The Subject authenticated in the current thread if one
@@ -304,8 +307,39 @@
}
}
return hasRole;
+ }
+
+ /** Return the set of domain roles the principal has been assigned.
+ @return The Set<Principal> for the application domain roles that the
+ principal has been assigned.
+ */
+ public Set getUserRoles(Principal principal)
+ {
+ HashSet userRoles = null;
+ Subject subject = getActiveSubject();
+ if( subject != null )
+ {
+ DomainInfo info = null;
+ if( domainCache != null )
+ info = (DomainInfo) domainCache.get(principal);
+
+ Group roles = null;
+ if( info != null )
+ roles = info.roles;
+ if( roles != null )
+ {
+ userRoles = new HashSet();
+ Enumeration members = roles.members();
+ while( members.hasMoreElements() )
+ {
+ Principal role = (Principal) members.nextElement();
+ userRoles.add(role);
+ }
+ }
+ }
+ return userRoles;
}
-
+
/** Currently this simply calls defaultLogin() to do a JAAS login using the
security domain name as the login module configuration name.
@@ -352,7 +386,7 @@
@exception LoginException throw if login fails for any reason.
*/
private Subject defaultLogin(Principal principal, Object credential)
- throws LoginException
+ throws LoginException
{
// We use our internal CallbackHandler to provide the security info
handler.setSecurityInfo(principal, credential);
1.2.2.5 +25 -8
jbosssx/src/main/org/jboss/security/plugins/JaasSecurityManagerService.java
Index: JaasSecurityManagerService.java
===================================================================
RCS file:
/cvsroot/jboss/jbosssx/src/main/org/jboss/security/plugins/JaasSecurityManagerService.java,v
retrieving revision 1.2.2.4
retrieving revision 1.2.2.5
diff -u -r1.2.2.4 -r1.2.2.5
--- JaasSecurityManagerService.java 2001/08/20 22:07:41 1.2.2.4
+++ JaasSecurityManagerService.java 2001/09/26 06:36:35 1.2.2.5
@@ -42,6 +42,7 @@
import org.jboss.logging.log4j.JBossCategory;
import org.jboss.security.SecurityAssociation;
import org.jboss.security.SecurityProxyFactory;
+import org.jboss.security.SecurityDomain;
import org.jboss.security.SubjectSecurityManager;
import org.jboss.util.CachePolicy;
import org.jboss.util.ServiceMBeanSupport;
@@ -75,9 +76,10 @@
/** The class that provides the SecurityProxyFactory implementation */
private static String securityProxyFactoryClassName =
"org.jboss.security.SubjectSecurityProxyFactory";
private static Class securityProxyFactoryClass =
org.jboss.security.SubjectSecurityProxyFactory.class;
-
+
private static Hashtable jsmMap = new Hashtable();
private static NameParser parser;
+ private static MBeanServer server;
static
{
@@ -87,7 +89,7 @@
log = (JBossCategory)
JBossCategory.getInstance(JaasSecurityManagerService.class);
}
-
+
/** The constructor does nothing as the security manager is created
on each lookup into java:/jaas/xxx. This is also why all variables
in this class are static.
@@ -95,7 +97,7 @@
public JaasSecurityManagerService()
{
}
-
+
public String getSecurityManagerClassName()
{
return securityMgrClassName;
@@ -160,9 +162,10 @@
protected ObjectName getObjectName(MBeanServer server, ObjectName name)
throws MalformedObjectNameException
{
+ JaasSecurityManagerService.server = server;
return new ObjectName(OBJECT_NAME);
}
-
+
protected void startService() throws Exception
{
InitialContext ic = new InitialContext();
@@ -209,6 +212,14 @@
}
}
+ /** Register a SecurityDomain implmentation
+ */
+ public void registerSecurityDomain(String securityDomain, SecurityDomain
instance)
+ {
+ log.info("Added "+securityDomain+", "+instance+" to map");
+ jsmMap.put(securityDomain, instance);
+ }
+
// ObjectFactory implementation ----------------------------------
public static class SecurityDomainObjectFactory implements InvocationHandler,
ObjectFactory
@@ -230,10 +241,12 @@
{
Object securityMgr = null;
try
- { // Create instance of securityMgrClass
+ {
+ // Create instance of securityMgrClass
Class[] parameterTypes = {String.class};
Constructor ctor = securityMgrClass.getConstructor(parameterTypes);
Object[] args = {securityDomain};
+ ObjectName name = new ObjectName(server.getDefaultDomain(),
"securityDomain", securityDomain);
securityMgr = ctor.newInstance(args);
log.info("Created securityMgr="+securityMgr);
// See if the security mgr supports an externalized cache policy
@@ -265,7 +278,7 @@
if( methodName.equals("toString") == true )
return "java:/jaas Context proxy";
if( methodName.equals("list") == true )
- return new DomainEnumeration(jsmMap.keys());
+ return new DomainEnumeration(jsmMap.keys(), jsmMap);
if( methodName.equals("lookup") == false )
throw new OperationNotSupportedException("Only lookup is supported,
op="+method);
@@ -299,9 +312,11 @@
static class DomainEnumeration implements NamingEnumeration
{
Enumeration domains;
- DomainEnumeration(Enumeration domains)
+ Hashtable jsmMap;
+ DomainEnumeration(Enumeration domains, Hashtable jsmMap)
{
this.domains = domains;
+ this.jsmMap = jsmMap;
}
public void close()
@@ -318,7 +333,9 @@
public Object next()
{
String name = (String) domains.nextElement();
- NameClassPair pair = new NameClassPair(name, securityMgrClassName);
+ Object value = jsmMap.get(name);
+ String className = value.getClass().getName();
+ NameClassPair pair = new NameClassPair(name, className);
return pair;
}
public Object nextElement()
1.1.2.2 +8 -2
jbosssx/src/main/org/jboss/security/plugins/JaasSecurityManagerServiceMBean.java
Index: JaasSecurityManagerServiceMBean.java
===================================================================
RCS file:
/cvsroot/jboss/jbosssx/src/main/org/jboss/security/plugins/JaasSecurityManagerServiceMBean.java,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -r1.1.2.1 -r1.1.2.2
--- JaasSecurityManagerServiceMBean.java 2001/07/29 02:22:28 1.1.2.1
+++ JaasSecurityManagerServiceMBean.java 2001/09/26 06:36:35 1.1.2.2
@@ -4,16 +4,19 @@
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
-
package org.jboss.security.plugins;
+import org.jboss.security.SecurityDomain;
+
/** The interface for the JaasSecurityManagerService mbean.
+ @author [EMAIL PROTECTED]
+ @version $Revision: 1.1.2.2 $
*/
public interface JaasSecurityManagerServiceMBean
extends org.jboss.util.ServiceMBean
{
// Constants -----------------------------------------------------
- public static final String OBJECT_NAME = ":service=JaasSecurityManager";
+ public static final String OBJECT_NAME = "Security:name=JaasSecurityManager";
// Public --------------------------------------------------------
/** Get the name of the class that provides the security manager implementation.
@@ -40,4 +43,7 @@
instance supports a flushCache() method.
*/
public void flushAuthenticationCache(String securityDomain);
+ /** Register a SecurityDomain implmentation
+ */
+ public void registerSecurityDomain(String securityDomain, SecurityDomain
instance);
}
No revision
No revision
1.1.2.1 +154 -0
jbosssx/src/main/org/jboss/security/plugins/Attic/JaasSecurityDomain.java
1.1.2.1 +27 -0
jbosssx/src/main/org/jboss/security/plugins/Attic/JaasSecurityDomainMBean.java
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development