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

Shane Bryzak sbryzak at redhat.com
Tue Nov 6 03:56:24 EST 2007


  User: sbryzak2
  Date: 07/11/06 03:56:24

  Modified:    src/main/org/jboss/seam/security   Identity.java
  Added:       src/main/org/jboss/seam/security   FacesSecurityEvents.java
  Log:
  JBSEAM-2200
  
  Revision  Changes    Path
  1.102     +21 -97    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.101
  retrieving revision 1.102
  diff -u -b -r1.101 -r1.102
  --- Identity.java	6 Nov 2007 07:33:15 -0000	1.101
  +++ Identity.java	6 Nov 2007 08:56:24 -0000	1.102
  @@ -4,6 +4,7 @@
   import static org.jboss.seam.annotations.Install.BUILT_IN;
   
   import java.io.IOException;
  +import java.io.Serializable;
   import java.lang.reflect.Method;
   import java.security.Principal;
   import java.security.acl.Group;
  @@ -11,9 +12,6 @@
   import java.util.Enumeration;
   import java.util.List;
   
  -import javax.faces.application.FacesMessage;
  -import javax.faces.application.FacesMessage.Severity;
  -import javax.faces.context.FacesContext;
   import javax.security.auth.Subject;
   import javax.security.auth.callback.Callback;
   import javax.security.auth.callback.CallbackHandler;
  @@ -37,8 +35,6 @@
   import org.jboss.seam.core.Events;
   import org.jboss.seam.core.Expressions;
   import org.jboss.seam.core.Expressions.MethodExpression;
  -import org.jboss.seam.faces.FacesMessages;
  -import org.jboss.seam.faces.Selector;
   import org.jboss.seam.log.LogProvider;
   import org.jboss.seam.log.Logging;
   import org.jboss.seam.persistence.PersistenceProvider;
  @@ -60,7 +56,7 @@
   @Install(precedence = BUILT_IN)
   @BypassInterceptors
   @Startup
  -public class Identity extends Selector
  +public class Identity implements Serializable
   {  
      private static boolean securityEnabled = true;
      
  @@ -80,6 +76,8 @@
      private Principal principal;   
      private Subject subject;
      
  +   private boolean rememberMe;
  +   
      private String jaasConfigName = null;
      
      private List<String> preAuthenticationRoles = new ArrayList<String>();
  @@ -91,17 +89,11 @@
       */
      private boolean authenticating = false;
      
  -   @Override
  -   protected String getCookieName()
  -   {
  -      return "org.jboss.seam.security.username";
  -   }
  -      
      @Create
      public void create()
      {     
         subject = new Subject();
  -      initCredentialsFromCookie();
  +      Events.instance().raiseEvent("org.jboss.seam.security.initIdentity");
      }
      
      public static boolean isSecurityEnabled()
  @@ -124,32 +116,10 @@
         this.authenticateEveryRequest = authenticateEveryRequest;
      }
   
  -   protected void initCredentialsFromCookie()
  -   {
  -      FacesContext ctx = FacesContext.getCurrentInstance();
  -      if (ctx != null)
  -      {
  -         setCookiePath(ctx.getExternalContext().getRequestContextPath());
  -      }
  -      
  -      username = getCookieValue();
  -      if (username!=null)
  -      {
  -         setCookieEnabled(true);
  -         postRememberMe();
  -      }
  -      setDirty();
  -   }
  -   
      public void beginRequest() {}
      
      public void endRequest() {}
   
  -   protected void postRememberMe()
  -   {
  -      Events.instance().raiseEvent("org.jboss.seam.rememberMe");
  -   }
  -
      public static Identity instance()
      {
         if ( !Contexts.isSessionContextActive() )
  @@ -239,7 +209,7 @@
            {
               log.debug("Login successful for: " + getUsername());
            }
  -         addLoginSuccessfulMessage();
  +         Events.instance().raiseEvent("org.jboss.seam.security.loginSuccessful");
            return "loggedIn";
         }
         catch (LoginException ex)
  @@ -248,7 +218,7 @@
            {
                log.debug("Login failed for: " + getUsername(), ex);
            }
  -         addLoginFailedMessage(ex);
  +         Events.instance().raiseEvent("org.jboss.seam.security.loginFailed", ex);
            return null;
         }
      }
  @@ -267,54 +237,6 @@
         catch (LoginException ex) { }
      }
   
  -   protected void addLoginFailedMessage(LoginException ex)
  -   {
  -      FacesMessages.instance().addFromResourceBundleOrDefault(
  -               getLoginFailedMessageSeverity(), 
  -               getLoginFailedMessageKey(), 
  -               getLoginFailedMessage(), 
  -               ex);
  -   }
  -
  -   protected String getLoginFailedMessage()
  -   {
  -      return "Login failed";
  -   }
  -
  -   protected Severity getLoginFailedMessageSeverity()
  -   {
  -      return FacesMessage.SEVERITY_INFO;
  -   }
  -
  -   protected String getLoginFailedMessageKey()
  -   {
  -      return "org.jboss.seam.loginFailed";
  -   }
  -
  -   protected void addLoginSuccessfulMessage()
  -   {
  -      FacesMessages.instance().addFromResourceBundleOrDefault(
  -               getLoginSuccessfulMessageSeverity(), 
  -               getLoginSuccessfulMessageKey(), 
  -               getLoginSuccessfulMessage(), 
  -               getUsername());
  -   }
  -
  -   protected Severity getLoginSuccessfulMessageSeverity()
  -   {
  -      return FacesMessage.SEVERITY_INFO;
  -   }
  -
  -   protected String getLoginSuccessfulMessage()
  -   {
  -      return "Welcome, #0";
  -   }
  -
  -   protected String getLoginSuccessfulMessageKey()
  -   {
  -      return "org.jboss.seam.loginSuccessful";
  -   }
  -   
      public void authenticate() 
         throws LoginException
      {
  @@ -358,7 +280,6 @@
               if (principal == null) 
               {
                  principal = p;
  -               setDirty();
                  break;
               }            
            }         
  @@ -373,11 +294,7 @@
            preAuthenticationRoles.clear();
         }
         
  -      if ( !isRememberMe() ) clearCookieValue();
  -      setCookieValueIfEnabled( getUsername() );
  -      
         password = null;
  -      setDirty();
   
         Events.instance().raiseEvent("org.jboss.seam.postAuthenticate");
      }
  @@ -614,8 +531,11 @@
      
      public void setUsername(String username)
      {
  -      setDirty(this.username, username);
  +      if (this.username != username && (this.username == null || !this.username.equals(username)))
  +      {
         this.username = username;
  +         Events.instance().raiseEvent("org.jboss.seam.security.credentialsUpdated");
  +      }
      }
      
      public String getPassword()
  @@ -625,8 +545,11 @@
      
      public void setPassword(String password)
      {
  -      setDirty(this.password, password);
  +      if (this.password != password && (this.password == null || !this.password.equals(password)))
  +      {
         this.password = password;
  +         Events.instance().raiseEvent("org.jboss.seam.security.credentialsUpdated");
  +      }      
      }
      
      public MethodExpression getAuthenticateMethod()
  @@ -641,12 +564,13 @@
      
      public boolean isRememberMe()
      {
  -      return isCookieEnabled();
  +      return rememberMe;
      }
      
      public void setRememberMe(boolean remember)
      {
  -      setCookieEnabled(remember);
  +      this.rememberMe = remember;
  +      Events.instance().raiseEvent("org.jboss.seam.security.rememberMe");
      }
      
      public String getJaasConfigName()
  
  
  
  1.1      date: 2007/11/06 08:56:24;  author: sbryzak2;  state: Exp;jboss-seam/src/main/org/jboss/seam/security/FacesSecurityEvents.java
  
  Index: FacesSecurityEvents.java
  ===================================================================
  package org.jboss.seam.security;
  
  import static org.jboss.seam.ScopeType.APPLICATION;
  import static org.jboss.seam.annotations.Install.BUILT_IN;
  
  import javax.faces.application.FacesMessage;
  import javax.faces.application.FacesMessage.Severity;
  import javax.faces.context.FacesContext;
  import javax.security.auth.login.LoginException;
  
  import org.jboss.seam.annotations.Install;
  import org.jboss.seam.annotations.Name;
  import org.jboss.seam.annotations.Observer;
  import org.jboss.seam.annotations.Scope;
  import org.jboss.seam.annotations.Startup;
  import org.jboss.seam.annotations.intercept.BypassInterceptors;
  import org.jboss.seam.faces.FacesMessages;
  import org.jboss.seam.faces.Selector;
  
  /**
   * Produces FacesMessages for certain security events, and decouples the
   * Identity component from JSF - and also handles cookie functionality.
   * 
   * @author Shane Bryzak
   */
  @Name("org.jboss.seam.security.facesSecurityEvents")
  @Scope(APPLICATION)
  @Install(precedence = BUILT_IN, classDependencies = "javax.faces.context.FacesContext")
  @BypassInterceptors
  @Startup
  public class FacesSecurityEvents extends Selector
  {  
     @Override
     public String getCookieName()
     {
        return "org.jboss.seam.security.username";
     }   
     
     @Observer("org.jboss.seam.security.initIdentity")
     public void initCredentialsFromCookie()
     {       
        FacesContext ctx = FacesContext.getCurrentInstance();
        if (ctx != null)
        {
           setCookiePath(ctx.getExternalContext().getRequestContextPath());
        }
        
        Identity.instance().setRememberMe(isCookieEnabled());      
        
        String username = getCookieValue();
        if (username!=null)
        {
           setCookieEnabled(true);
           Identity.instance().setUsername(username);
           postRememberMe();
        }
              
        setDirty();
     }
     
     @Observer("org.jboss.seam.security.credentialsUpdated")
     public void credentialsUpdated()
     {
        setDirty();
     }
     
     @Observer("org.jboss.seam.postAuthenticate")
     public void postAuthenticate()
     {
        // Password is set to null during authentication, so we set dirty
        setDirty();
              
        if ( !Identity.instance().isRememberMe() ) clearCookieValue();
        setCookieValueIfEnabled( Identity.instance().getUsername() );      
     }
     
     @Observer("org.jboss.seam.security.rememberMe")
     public void postRememberMe()
     {
        setCookieEnabled(Identity.instance().isRememberMe());
     }     
     
     @Observer("org.jboss.seam.security.loginFailed")
     public void addLoginFailedMessage(LoginException ex)
     {
        FacesMessages.instance().addFromResourceBundleOrDefault(
                 getLoginFailedMessageSeverity(), 
                 getLoginFailedMessageKey(), 
                 getLoginFailedMessage(), 
                 ex);
     }
  
     public String getLoginFailedMessage()
     {
        return "Login failed";
     }
  
     public Severity getLoginFailedMessageSeverity()
     {
        return FacesMessage.SEVERITY_INFO;
     }
  
     public String getLoginFailedMessageKey()
     {
        return "org.jboss.seam.loginFailed";
     }
  
     @Observer("org.jboss.seam.security.loginSuccessful")
     public void addLoginSuccessfulMessage()
     {
        FacesMessages.instance().addFromResourceBundleOrDefault(
                 getLoginSuccessfulMessageSeverity(), 
                 getLoginSuccessfulMessageKey(), 
                 getLoginSuccessfulMessage(), 
                 Identity.instance().getUsername());
     }
  
     public Severity getLoginSuccessfulMessageSeverity()
     {
        return FacesMessage.SEVERITY_INFO;
     }
  
     public String getLoginSuccessfulMessage()
     {
        return "Welcome, #0";
     }
  
     public String getLoginSuccessfulMessageKey()
     {
        return "org.jboss.seam.loginSuccessful";
     }   
  }
  
  
  



More information about the jboss-cvs-commits mailing list