[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