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

Reply via email to