[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