[jboss-cvs] jboss-seam/src/main/org/jboss/seam/security ...

Shane Bryzak Shane_Bryzak at symantec.com
Fri Jan 26 01:38:29 EST 2007


  User: sbryzak2
  Date: 07/01/26 01:38:29

  Modified:    src/main/org/jboss/seam/security  Identity.java
  Log:
  removed jaas config from SecurityConfiguration
  
  Revision  Changes    Path
  1.19      +80 -47    jboss-seam/src/main/org/jboss/seam/security/Identity.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: Identity.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/security/Identity.java,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -b -r1.18 -r1.19
  --- Identity.java	25 Jan 2007 20:29:35 -0000	1.18
  +++ Identity.java	26 Jan 2007 06:38:29 -0000	1.19
  @@ -10,8 +10,10 @@
   import java.security.acl.Permission;
   import java.util.ArrayList;
   import java.util.Enumeration;
  +import java.util.HashMap;
   import java.util.HashSet;
   import java.util.List;
  +import java.util.Map;
   import java.util.Set;
   
   import javax.faces.context.FacesContext;
  @@ -21,8 +23,11 @@
   import javax.security.auth.callback.NameCallback;
   import javax.security.auth.callback.PasswordCallback;
   import javax.security.auth.callback.UnsupportedCallbackException;
  +import javax.security.auth.login.AppConfigurationEntry;
  +import javax.security.auth.login.Configuration;
   import javax.security.auth.login.LoginContext;
   import javax.security.auth.login.LoginException;
  +import javax.security.auth.login.AppConfigurationEntry.LoginModuleControlFlag;
   
   import org.drools.FactHandle;
   import org.drools.RuleBase;
  @@ -36,9 +41,11 @@
   import org.jboss.seam.annotations.Name;
   import org.jboss.seam.annotations.Scope;
   import org.jboss.seam.contexts.Contexts;
  +import org.jboss.seam.core.Expressions.MethodBinding;
   import org.jboss.seam.security.config.SecurityConfiguration;
   import org.jboss.seam.security.config.SecurityConfiguration.Role;
   import org.jboss.seam.security.rules.PermissionCheck;
  +import org.jboss.seam.security.spi.SeamLoginModule;
   import org.jboss.seam.util.UnifiedELValueBinding;
   
   @Name("org.jboss.seam.security.identity")
  @@ -48,9 +55,35 @@
   {  
      private static final long serialVersionUID = 3751659008033189259L;
         
  +   private static final String DEFAULT_CONFIG_NAME = "default";   
  +   
  +   private class LoginModuleConfiguration extends Configuration
  +   {
  +      private Map<String,AppConfigurationEntry[]> entries = new HashMap<String,AppConfigurationEntry[]>();
  +      
  +      public void addEntry(String name, AppConfigurationEntry[] entry)
  +      {
  +         entries.put(name, entry);
  +      }
  +      
  +      @Override
  +      public AppConfigurationEntry[] getAppConfigurationEntry(String name)
  +      {
  +         return entries.get(name);
  +      }
  +      
  +      @Override
  +      public void refresh() { }
  +   }
  +   
  +   private static LoginModuleConfiguration defaultConfig = null;
  +      
      private String username;
      private String password;
   
  +   private MethodBinding authMethod;
  +   private String postLoginMethod;
  +
      protected Principal principal;   
      protected Subject subject;
      
  @@ -146,10 +179,23 @@
      public void login()
         throws LoginException
      {
  -      CallbackHandler cbh = createCallbackHandler(username, password);
  +      login(null);      
  +   }
  +   
  +   public void login(LoginContext loginContext)
  +      throws LoginException
  +   {
  +      CallbackHandler handler = createCallbackHandler(username, password);
  +   
  +      if (loginContext == null)
  +      {
  +         loginContext = new LoginContext(DEFAULT_CONFIG_NAME, subject, handler, 
  +                  getConfiguration());
  +      }
  +      
  +      loginContext.login();
            
  -      LoginContext lc = createLoginContext(null, cbh);
  -      lc.login();      
  +      postLogin();
      }
      
      public void logout()
  @@ -239,51 +285,28 @@
         };
      }
      
  -   
  -   /**
  -    * Creates a LoginContext without a callback handler
  -    * 
  -    * @throws LoginException
  -    */
  -   public LoginContext createLoginContext()
  -      throws LoginException
  +   protected Configuration getConfiguration()
      {
  -      return createLoginContext(null, null);
  +      if (defaultConfig == null)
  +      {
  +         createDefaultConfig();
      }
      
  -   /**
  -    * Creates a LoginContext using a configuration specified by name.
  -    *  
  -    * @param policyName The name of the security configuration policy to use
  -    * @throws LoginException
  -    */
  -   public LoginContext createLoginContext(String policyName)
  -      throws LoginException
  -   {
  -      return createLoginContext(policyName, null);      
  +      return defaultConfig;
      }
         
  -   /**
  -    * A factory method for creating a LoginContext instance.  Users must use this
  -    * method instead of creating their own LoginContext as this factory method
  -    * creates a LoginContext with a custom configuration and overridden login()
  -    * method.
  -    * 
  -    * @param cbHandler The callback handler provided to the LoginContext
  -    * @throws LoginException
  -    */
  -   public LoginContext createLoginContext(String policyName, CallbackHandler cbHandler)
  -       throws LoginException
  +   private synchronized void createDefaultConfig()
      {     
  -      String name = policyName != null ? policyName : SecurityConfiguration.DEFAULT_LOGIN_MODULE_NAME;
  -      
  -      return new LoginContext(name, subject, cbHandler,
  -            SecurityConfiguration.instance().getLoginModuleConfiguration()) {
  -         @Override public void login() throws LoginException {
  -            super.login();
  -            postLogin();
  -         }
  +      if (defaultConfig == null)
  +      {
  +         defaultConfig = new LoginModuleConfiguration();
  +         Map<String,String> options = new HashMap<String,String>();
  +         AppConfigurationEntry[] entries = new AppConfigurationEntry[] {
  +            new AppConfigurationEntry(SeamLoginModule.class.getName(), 
  +                     LoginModuleControlFlag.REQUIRED, options)
         };
  +         defaultConfig.addEntry(DEFAULT_CONFIG_NAME, entries);
  +      }
      }
      
      /**
  @@ -411,4 +434,14 @@
      {
         return securityContext;
      }
  +   
  +   public MethodBinding getAuthMethod()
  +   {
  +      return authMethod;
  +   }
  +   
  +   public void setAuthMethod(MethodBinding authMethod)
  +   {
  +      this.authMethod = authMethod;
  +   }
   }
  
  
  



More information about the jboss-cvs-commits mailing list