You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by dj...@apache.org on 2009/05/26 16:50:42 UTC
svn commit: r778726 [2/2] - in /geronimo/server/trunk:
framework/modules/geronimo-security/
framework/modules/geronimo-security/src/main/java/org/apache/geronimo/security/jaas/
framework/modules/geronimo-security/src/main/java/org/apache/geronimo/secur...
Modified: geronimo/server/trunk/plugins/jetty7/geronimo-jetty7/src/main/java/org/apache/geronimo/jetty7/JettyWebAppContext.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jetty7/geronimo-jetty7/src/main/java/org/apache/geronimo/jetty7/JettyWebAppContext.java?rev=778726&r1=778725&r2=778726&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jetty7/geronimo-jetty7/src/main/java/org/apache/geronimo/jetty7/JettyWebAppContext.java (original)
+++ geronimo/server/trunk/plugins/jetty7/geronimo-jetty7/src/main/java/org/apache/geronimo/jetty7/JettyWebAppContext.java Tue May 26 14:50:40 2009
@@ -110,106 +110,6 @@
public static final String GBEAN_REF_SESSION_HANDLER_FACTORY = "SessionHandlerFactory";
public static final String GBEAN_REF_PRE_HANDLER_FACTORY = "PreHandlerFactory";
-// static {
-// GBeanInfoBuilder infoBuilder = GBeanInfoBuilder.createStatic("Jetty WebApplication Context", JettyWebAppContext.class, NameFactory.WEB_MODULE);
-// infoBuilder.addAttribute("deploymentDescriptor", String.class, true);
-// //from jetty7's webapp context
-//
-// infoBuilder.addAttribute("displayName", String.class, true);
-// infoBuilder.addAttribute("contextParamMap", Map.class, true);
-// infoBuilder.addAttribute("listenerClassNames", Collection.class, true);
-// infoBuilder.addAttribute("distributable", boolean.class, true);
-//
-// infoBuilder.addAttribute("mimeMap", Map.class, true);
-// infoBuilder.addAttribute("welcomeFiles", String[].class, true);
-// infoBuilder.addAttribute("localeEncodingMapping", Map.class, true);
-// infoBuilder.addAttribute("errorPages", Map.class, true);
-// infoBuilder.addAttribute("authenticator", Authenticator.class, true);
-// infoBuilder.addAttribute("realmName", String.class, true);
-// infoBuilder.addAttribute("tagLibMap", Map.class, true);
-// infoBuilder.addAttribute(GBEAN_ATTR_SESSION_TIMEOUT, int.class, true);
-// infoBuilder.addReference(GBEAN_REF_SESSION_HANDLER_FACTORY, SessionHandlerFactory.class,
-// NameFactory.GERONIMO_SERVICE);
-// infoBuilder.addReference(GBEAN_REF_PRE_HANDLER_FACTORY, PreHandlerFactory.class, NameFactory.GERONIMO_SERVICE);
-//
-// infoBuilder.addAttribute("componentContext", Map.class, true);
-// infoBuilder.addAttribute("classLoader", ClassLoader.class, false);
-// infoBuilder.addAttribute("configurationBaseUrl", URL.class, true);
-// infoBuilder.addAttribute("unshareableResources", Set.class, true);
-// infoBuilder.addAttribute("applicationManagedSecurityResources", Set.class, true);
-//
-// infoBuilder.addAttribute("contextPath", String.class, true);
-// infoBuilder.addAttribute("compactPath", boolean.class, true);
-//
-// infoBuilder.addAttribute("workDir", String.class, true);
-// infoBuilder.addReference("Host", Host.class, "Host");
-// infoBuilder.addReference("TransactionManager", TransactionManager.class, NameFactory.JTA_RESOURCE);
-// infoBuilder.addReference("TrackedConnectionAssociator", TrackedConnectionAssociator.class, NameFactory.JCA_CONNECTION_TRACKER);
-// infoBuilder.addReference("JettyContainer", JettyContainer.class, NameFactory.GERONIMO_SERVICE);
-// infoBuilder.addReference("ContextCustomizer", RuntimeCustomizer.class, NameFactory.GERONIMO_SERVICE);
-//
-// infoBuilder.addInterface(JettyServletRegistration.class);
-//
-// infoBuilder.addAttribute("policyContextID", String.class, true);
-// infoBuilder.addAttribute("securityRealmName", String.class, true);
-// infoBuilder.addReference("RunAsSource", RunAsSource.class, NameFactory.JACC_MANAGER);
-//
-// infoBuilder.addAttribute("holder", Holder.class, true);
-//
-// infoBuilder.addReference("J2EEServer", J2EEServer.class);
-// infoBuilder.addReference("J2EEApplication", J2EEApplication.class);
-//
-// infoBuilder.addAttribute("kernel", Kernel.class, false);
-// infoBuilder.addAttribute("objectName", String.class, false);
-// infoBuilder.addAttribute("application", String.class, false);
-// infoBuilder.addAttribute("javaVMs", String[].class, false);
-// infoBuilder.addAttribute("servlets", String[].class, false);
-//
-// infoBuilder.addInterface(WebModule.class);
-//
-// infoBuilder.setConstructor(new String[]{
-// "objectName",
-// "deploymentDescriptor",
-// "componentContext",
-// "classLoader",
-// "configurationBaseUrl",
-// "unshareableResources",
-// "applicationManagedSecurityResources",
-//
-// "displayName",
-// "contextParamMap",
-// "listenerClassNames",
-// "distributable",
-// "mimeMap",
-// "welcomeFiles",
-// "localeEncodingMapping",
-// "errorPages",
-// "authenticator",
-// "realmName",
-// "tagLibMap",
-// "compactPath",
-// GBEAN_ATTR_SESSION_TIMEOUT,
-// GBEAN_REF_SESSION_HANDLER_FACTORY,
-// GBEAN_REF_PRE_HANDLER_FACTORY,
-//
-// "policyContextID",
-// "securityRealmName",
-// "RunAsSource",
-//
-// "holder",
-//
-// "Host",
-// "TransactionManager",
-// "TrackedConnectionAssociator",
-// "JettyContainer",
-// "ContextCustomizer",
-//
-// "J2EEServer",
-// "J2EEApplication",
-// "kernel"
-// });
-//
-// }
public JettyWebAppContext(@ParamSpecial(type = SpecialAttributeType.objectName)String objectName,
@ParamAttribute(name = "contextPath")String contextPath,
@@ -284,7 +184,6 @@
//TODO may need to turn off security with Context._options.
// securityHandler = new NoSecurityHandler();
}
-// }
ServletHandler servletHandler = new ServletHandler();
Modified: geronimo/server/trunk/plugins/jetty7/geronimo-jetty7/src/main/java/org/apache/geronimo/jetty7/handler/JettySecurityHandler.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jetty7/geronimo-jetty7/src/main/java/org/apache/geronimo/jetty7/handler/JettySecurityHandler.java?rev=778726&r1=778725&r2=778726&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jetty7/geronimo-jetty7/src/main/java/org/apache/geronimo/jetty7/handler/JettySecurityHandler.java (original)
+++ geronimo/server/trunk/plugins/jetty7/geronimo-jetty7/src/main/java/org/apache/geronimo/jetty7/handler/JettySecurityHandler.java Tue May 26 14:50:40 2009
@@ -47,7 +47,9 @@
public JettySecurityHandler(
String policyContextID,
Authenticator authenticator,
- final LoginService loginService, IdentityService identityService, AccessControlContext defaultAcc) {
+ final LoginService loginService,
+ IdentityService identityService,
+ AccessControlContext defaultAcc) {
setAuthenticator(authenticator);
this.policyContextID = policyContextID;
this.defaultAcc = defaultAcc;
Modified: geronimo/server/trunk/plugins/jetty7/geronimo-jetty7/src/main/java/org/apache/geronimo/jetty7/security/AuthConfigProviderHandlerFactory.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jetty7/geronimo-jetty7/src/main/java/org/apache/geronimo/jetty7/security/AuthConfigProviderHandlerFactory.java?rev=778726&r1=778725&r2=778726&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jetty7/geronimo-jetty7/src/main/java/org/apache/geronimo/jetty7/security/AuthConfigProviderHandlerFactory.java (original)
+++ geronimo/server/trunk/plugins/jetty7/geronimo-jetty7/src/main/java/org/apache/geronimo/jetty7/security/AuthConfigProviderHandlerFactory.java Tue May 26 14:50:40 2009
@@ -33,10 +33,12 @@
import org.apache.geronimo.gbean.annotation.GBean;
import org.apache.geronimo.gbean.annotation.ParamAttribute;
+import org.apache.geronimo.gbean.annotation.ParamReference;
import org.apache.geronimo.jetty7.handler.JettySecurityHandler;
import org.apache.geronimo.jetty7.security.auth.JAASLoginService;
import org.apache.geronimo.security.jacc.RunAsSource;
import org.apache.geronimo.security.ContextManager;
+import org.apache.geronimo.security.jaas.ConfigurationFactory;
import org.eclipse.jetty.security.Authenticator;
import org.eclipse.jetty.security.LoginService;
import org.eclipse.jetty.security.IdentityService;
@@ -62,14 +64,12 @@
private final LoginService loginService;
private final ServerAuthConfig serverAuthConfig;
private final ServletCallbackHandler servletCallbackHandler;
-// private final IdentityService identityService;
-// private final AccessControlContext defaultAcc;
public AuthConfigProviderHandlerFactory(@ParamAttribute(name = "messageLayer")String messageLayer,
@ParamAttribute(name = "appContext")String appContext,
- @ParamAttribute(name = "securityRealm")String securityRealm,
- @ParamAttribute(name = "allowLazyAuthentication") boolean allowLazyAuthentication
+ @ParamAttribute(name = "allowLazyAuthentication") boolean allowLazyAuthentication,
+ @ParamReference(name = "ConfigurationFactory") ConfigurationFactory configurationFactory
) throws AuthException {
this.appContext = appContext;
this.allowLazyAuthentication = allowLazyAuthentication;
@@ -80,7 +80,7 @@
}
};
AuthConfigProvider authConfigProvider = authConfigFactory.getConfigProvider(messageLayer, appContext, listener);
- this.loginService = new JAASLoginService(securityRealm, null);
+ this.loginService = new JAASLoginService(configurationFactory, null);
servletCallbackHandler = new ServletCallbackHandler(loginService);
serverAuthConfig = authConfigProvider.getServerAuthConfig(messageLayer, appContext, servletCallbackHandler);
//TODO appContext is supposed to be server-name<space>context-root
Modified: geronimo/server/trunk/plugins/jetty7/geronimo-jetty7/src/main/java/org/apache/geronimo/jetty7/security/JettySecurityHandlerFactory.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jetty7/geronimo-jetty7/src/main/java/org/apache/geronimo/jetty7/security/JettySecurityHandlerFactory.java?rev=778726&r1=778725&r2=778726&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jetty7/geronimo-jetty7/src/main/java/org/apache/geronimo/jetty7/security/JettySecurityHandlerFactory.java (original)
+++ geronimo/server/trunk/plugins/jetty7/geronimo-jetty7/src/main/java/org/apache/geronimo/jetty7/security/JettySecurityHandlerFactory.java Tue May 26 14:50:40 2009
@@ -26,9 +26,11 @@
import org.apache.geronimo.gbean.annotation.GBean;
import org.apache.geronimo.gbean.annotation.ParamAttribute;
+import org.apache.geronimo.gbean.annotation.ParamReference;
import org.apache.geronimo.jetty7.handler.JettySecurityHandler;
import org.apache.geronimo.jetty7.security.auth.JAASLoginService;
import org.apache.geronimo.security.ContextManager;
+import org.apache.geronimo.security.jaas.ConfigurationFactory;
import org.apache.geronimo.security.jacc.RunAsSource;
import org.eclipse.jetty.security.Authenticator;
import org.eclipse.jetty.security.IdentityService;
@@ -49,28 +51,28 @@
private final String loginPage;
private final String errorPage;
private final String realmName;
- private final String securityRealm;
+ private final ConfigurationFactory configurationFactory;
public JettySecurityHandlerFactory(@ParamAttribute(name = "authMethod")BuiltInAuthMethod authMethod,
@ParamAttribute(name = "loginPage")String loginPage,
@ParamAttribute(name = "errorPage")String errorPage,
@ParamAttribute(name = "realmName")String realmName,
- @ParamAttribute(name = "securityRealm")String securityRealm) {
+ @ParamReference(name = "ConfigurationFactory") ConfigurationFactory configurationFactory) {
if (authMethod == null) {
throw new NullPointerException("authMethod required");
}
- if (securityRealm == null) {
- throw new NullPointerException("securityRealm required");
+ if (configurationFactory == null) {
+ throw new NullPointerException("configurationFactory required");
}
this.authMethod = authMethod;
this.loginPage = loginPage;
this.errorPage = errorPage;
this.realmName = realmName;
- this.securityRealm = securityRealm;
+ this.configurationFactory = configurationFactory;
}
public JettySecurityHandler buildSecurityHandler(String policyContextID, Subject defaultSubject, RunAsSource runAsSource) {
- final LoginService loginService = new JAASLoginService(securityRealm, realmName);
+ final LoginService loginService = new JAASLoginService(configurationFactory, realmName);
Authenticator authenticator;
if (authMethod == BuiltInAuthMethod.BASIC) {
authenticator = new BasicAuthenticator();
Modified: geronimo/server/trunk/plugins/jetty7/geronimo-jetty7/src/main/java/org/apache/geronimo/jetty7/security/auth/JAASLoginService.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jetty7/geronimo-jetty7/src/main/java/org/apache/geronimo/jetty7/security/auth/JAASLoginService.java?rev=778726&r1=778725&r2=778726&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jetty7/geronimo-jetty7/src/main/java/org/apache/geronimo/jetty7/security/auth/JAASLoginService.java (original)
+++ geronimo/server/trunk/plugins/jetty7/geronimo-jetty7/src/main/java/org/apache/geronimo/jetty7/security/auth/JAASLoginService.java Tue May 26 14:50:40 2009
@@ -28,6 +28,7 @@
import javax.security.auth.login.LoginException;
import org.apache.geronimo.security.ContextManager;
+import org.apache.geronimo.security.jaas.ConfigurationFactory;
import org.apache.geronimo.security.realm.providers.PasswordCallbackHandler;
import org.eclipse.jetty.security.IdentityService;
import org.eclipse.jetty.security.LoginService;
@@ -37,12 +38,17 @@
* @version $Rev$ $Date$
*/
public class JAASLoginService implements LoginService {
- private final String securityRealm;
private final String realmName;
+ private final ConfigurationFactory configurationFactory;
private IdentityService identityService;
- public JAASLoginService(String securityRealm, String realmName) {
- this.securityRealm = securityRealm;
+ /**
+ * Construct a JAASLoginService
+ * @param configurationFactory may be null if auth system does not require local jaas login (such as openid)
+ * @param realmName may be null e.g. for jaspi.
+ */
+ public JAASLoginService(ConfigurationFactory configurationFactory, String realmName) {
+ this.configurationFactory = configurationFactory;
this.realmName = realmName;
}
@@ -58,7 +64,7 @@
char[] password = credentials instanceof String? ((String)credentials).toCharArray(): (char[]) credentials;
CallbackHandler callbackHandler = new PasswordCallbackHandler(username, password);
try {
- LoginContext loginContext = ContextManager.login(securityRealm, callbackHandler);
+ LoginContext loginContext = ContextManager.login(configurationFactory.getConfigurationName(), callbackHandler, configurationFactory.getConfiguration());
Subject establishedSubject = loginContext.getSubject();
Principal userPrincipal = ContextManager.getCurrentPrincipal(establishedSubject);
return identityService.newUserIdentity(establishedSubject, userPrincipal, null);
Modified: geronimo/server/trunk/plugins/monitoring/agent-ds/src/main/plan/plan.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/monitoring/agent-ds/src/main/plan/plan.xml?rev=778726&r1=778725&r2=778726&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/monitoring/agent-ds/src/main/plan/plan.xml (original)
+++ geronimo/server/trunk/plugins/monitoring/agent-ds/src/main/plan/plan.xml Tue May 26 14:50:40 2009
@@ -83,7 +83,7 @@
<gbean name="monitoring-runas-realm"
class="org.apache.geronimo.security.realm.GenericSecurityRealm">
<attribute name="realmName">monitoring-runas-realm</attribute>
- <attribute name="publish">false</attribute>
+ <attribute name="global">false</attribute>
<xml-reference name="LoginModuleConfiguration">
<lc:login-config xmlns:lc="http://geronimo.apache.org/xml/ns/loginconfig-1.2">
<lc:login-module control-flag="REQUIRED">
Modified: geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6-builder/src/main/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6-builder/src/main/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java?rev=778726&r1=778725&r2=778726&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6-builder/src/main/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java (original)
+++ geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6-builder/src/main/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java Tue May 26 14:50:40 2009
@@ -30,6 +30,7 @@
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
+import java.util.Collections;
import java.util.jar.JarFile;
import javax.servlet.Servlet;
@@ -68,6 +69,7 @@
import org.apache.geronimo.naming.deployment.GBeanResourceEnvironmentBuilder;
import org.apache.geronimo.naming.deployment.ResourceEnvironmentSetter;
import org.apache.geronimo.security.jacc.ComponentPermissions;
+import org.apache.geronimo.security.jaas.ConfigurationFactory;
import org.apache.geronimo.tomcat.LifecycleListenerGBean;
import org.apache.geronimo.tomcat.ManagerGBean;
import org.apache.geronimo.tomcat.RealmGBean;
@@ -467,9 +469,10 @@
}
SecurityHolder securityHolder = new SecurityHolder();
- securityHolder.setSecurityRealm(tomcatWebApp.getSecurityRealmName().trim());
+ String securityRealmName = tomcatWebApp.getSecurityRealmName().trim();
webModuleData.setReferencePattern("RunAsSource", (AbstractNameQuery)earContext.getGeneralData().get(ROLE_MAPPER_DATA_NAME));
+ webModuleData.setReferencePattern("ConfigurationFactory", new AbstractNameQuery(null, Collections.singletonMap("name", securityRealmName), ConfigurationFactory.class.getName()));
/**
* TODO - go back to commented version when possible.
Modified: geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6-builder/src/test/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilderTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6-builder/src/test/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilderTest.java?rev=778726&r1=778725&r2=778726&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6-builder/src/test/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilderTest.java (original)
+++ geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6-builder/src/test/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilderTest.java Tue May 26 14:50:40 2009
@@ -262,19 +262,19 @@
securityService.setReferencePattern("ServerInfo", serverInfo.getAbstractName());
// Default Realm
- Map initParams = new HashMap();
-
- initParams.put("userClassNames",
- "org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal");
- initParams.put("roleClassNames",
- "org.apache.geronimo.security.realm.providers.GeronimoGroupPrincipal");
- GBeanData realm = bootstrap.addGBean("tomcatRealm", RealmGBean.GBEAN_INFO);
- realm.setAttribute("className",
- "org.apache.geronimo.tomcat.realm.TomcatJAASRealm");
- realm.setAttribute("initParams", initParams);
+// Map initParams = new HashMap();
+//
+// initParams.put("userClassNames",
+// "org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal");
+// initParams.put("roleClassNames",
+// "org.apache.geronimo.security.realm.providers.GeronimoGroupPrincipal");
+// GBeanData realm = bootstrap.addGBean("tomcatRealm", RealmGBean.GBEAN_INFO);
+// realm.setAttribute("className",
+// "org.apache.geronimo.tomcat.realm.TomcatJAASRealm");
+// realm.setAttribute("initParams", initParams);
// Default Host
- initParams = new HashMap();
+ Map initParams = new HashMap();
initParams.put("workDir", "work");
initParams.put("name", "localhost");
initParams.put("appBase", "");
@@ -289,7 +289,7 @@
engine.setAttribute("className", "org.apache.geronimo.tomcat.TomcatEngine");
engine.setAttribute("initParams", initParams);
engine.setReferencePattern("DefaultHost", host.getAbstractName());
- engine.setReferencePattern("RealmGBean", realm.getAbstractName());
+// engine.setReferencePattern("RealmGBean", realm.getAbstractName());
WebServiceBuilder webServiceBuilder = new MockWebServiceBuilder();
Modified: geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6-builder/src/test/resources/deployables/war4/WEB-INF/geronimo-web.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6-builder/src/test/resources/deployables/war4/WEB-INF/geronimo-web.xml?rev=778726&r1=778725&r2=778726&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6-builder/src/test/resources/deployables/war4/WEB-INF/geronimo-web.xml (original)
+++ geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6-builder/src/test/resources/deployables/war4/WEB-INF/geronimo-web.xml Tue May 26 14:50:40 2009
@@ -51,6 +51,7 @@
userClassNames=org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal
roleClassNames=org.apache.geronimo.security.realm.providers.GeronimoGroupPrincipal
</attribute>
+ <reference name="ConfigurationFactory"><name>securityRealm</name></reference>
</gbean>
<gbean name="FirstValve" class="org.apache.geronimo.tomcat.ValveGBean">
@@ -69,4 +70,32 @@
pattern=common
</attribute>
</gbean>
+
+ <gbean name="properties-login"
+ class="org.apache.geronimo.security.jaas.LoginModuleGBean">
+ <attribute name="loginModuleClass">org.apache.geronimo.security.realm.providers.PropertiesFileLoginModule</attribute>
+ <attribute name="options">
+ usersURI=var/security/users.properties
+ groupsURI=var/security/groups.properties
+ </attribute>
+ <attribute name="loginDomainName">geronimo-admin</attribute>
+ </gbean>
+
+ <gbean name="securityRealm"
+ class="org.apache.geronimo.security.realm.GenericSecurityRealm">
+ <attribute name="realmName">securityRealm</attribute>
+ <attribute name="global">true</attribute>
+ <reference name="LoginModuleConfiguration">
+ <name>properties-login</name>
+ </reference>
+ <reference name="ServerInfo"><name>ServerInfo</name></reference>
+ </gbean>
+
+ <gbean name="properties-login" class="org.apache.geronimo.security.jaas.JaasLoginModuleUse">
+ <attribute name="controlFlag">REQUIRED</attribute>
+ <reference name="LoginModule">
+ <name>properties-login</name>
+ </reference>
+ </gbean>
+
</web-app>
Modified: geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/EngineGBean.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/EngineGBean.java?rev=778726&r1=778725&r2=778726&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/EngineGBean.java (original)
+++ geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/EngineGBean.java Tue May 26 14:50:40 2009
@@ -39,6 +39,8 @@
import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
import org.apache.geronimo.system.jmx.MBeanServerReference;
import org.apache.geronimo.tomcat.cluster.CatalinaClusterGBean;
+import org.apache.geronimo.tomcat.realm.TomcatJAASRealm;
+import org.apache.geronimo.security.jaas.ConfigurationFactory;
import org.apache.tomcat.util.modeler.Registry;
/**
@@ -57,6 +59,7 @@
Map initParams,
HostGBean defaultHost,
ObjectRetriever realmGBean,
+ ConfigurationFactory configurationFactory,
ValveGBean tomcatValveChain,
LifecycleListenerGBean listenerChain,
CatalinaClusterGBean clusterGBean,
@@ -96,6 +99,9 @@
//Set realm (must be before Hosts)
if (realmGBean != null){
engine.setRealm((Realm)realmGBean.getInternalObject());
+ } else if (configurationFactory != null) {
+ Realm realm = new TomcatJAASRealm(configurationFactory);
+ engine.setRealm(realm);
}
//Set the default Host
@@ -171,17 +177,18 @@
infoFactory.addAttribute("initParams", Map.class, true);
infoFactory.addReference("DefaultHost", HostGBean.class, HostGBean.J2EE_TYPE);
infoFactory.addReference("RealmGBean", ObjectRetriever.class, GBeanInfoBuilder.DEFAULT_J2EE_TYPE);
+ infoFactory.addReference("ConfigurationFactory", ConfigurationFactory.class, GBeanInfoBuilder.DEFAULT_J2EE_TYPE);
infoFactory.addReference("TomcatValveChain", ValveGBean.class, ValveGBean.J2EE_TYPE);
infoFactory.addReference("LifecycleListenerChain", LifecycleListenerGBean.class, LifecycleListenerGBean.J2EE_TYPE);
infoFactory.addReference("CatalinaCluster", CatalinaClusterGBean.class, CatalinaClusterGBean.J2EE_TYPE);
infoFactory.addReference("Manager", ManagerGBean.class, ManagerGBean.J2EE_TYPE);
infoFactory.addReference("MBeanServerReference", MBeanServerReference.class);
- infoFactory.addOperation("getInternalObject");
- infoFactory.setConstructor(new String[] {
+ infoFactory.setConstructor(new String[] {
"className",
"initParams",
"DefaultHost",
"RealmGBean",
+ "ConfigurationFactory",
"TomcatValveChain",
"LifecycleListenerChain",
"CatalinaCluster",
Modified: geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/RealmGBean.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/RealmGBean.java?rev=778726&r1=778725&r2=778726&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/RealmGBean.java (original)
+++ geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/RealmGBean.java Tue May 26 14:50:40 2009
@@ -17,25 +17,37 @@
package org.apache.geronimo.tomcat;
import java.util.Map;
+import java.lang.reflect.Constructor;
import org.apache.catalina.Realm;
import org.apache.geronimo.gbean.GBeanInfo;
import org.apache.geronimo.gbean.GBeanInfoBuilder;
import org.apache.geronimo.gbean.GBeanLifecycle;
+import org.apache.geronimo.security.jaas.ConfigurationFactory;
public class RealmGBean extends BaseGBean implements GBeanLifecycle, ObjectRetriever {
private final Realm realm;
- public RealmGBean(String className, Map initParams) throws Exception {
- super(); // TODO: make it an attribute
-
- assert className != null;
-
- realm = (Realm)Class.forName(className).newInstance();
+ public RealmGBean(String className, Map initParams, ConfigurationFactory configurationFactory, ClassLoader classLoader) throws Exception {
+ super();
+ if (className == null) throw new NullPointerException("No realm class supplied");
+
+ Class<?> clazz = Class.forName(className, true, classLoader);
+ Realm realm;
+ try {
+ Constructor c = clazz.getConstructor(ConfigurationFactory.class);
+ if (configurationFactory == null) {
+ throw new NullPointerException("ConfigurationFactory must be supplied");
+ }
+ realm = (Realm) c.newInstance(configurationFactory);
+ } catch (NoSuchMethodException e) {
+ realm = (Realm) clazz.newInstance();
+ }
+
setParameters(realm, initParams);
-
+ this.realm = realm;
}
public Object getInternalObject() {
@@ -57,9 +69,11 @@
GBeanInfoBuilder infoFactory = GBeanInfoBuilder.createStatic("TomcatRealm", RealmGBean.class);
infoFactory.addAttribute("className", String.class, true);
infoFactory.addAttribute("initParams", Map.class, true);
+ infoFactory.addReference("ConfigurationFactory", ConfigurationFactory.class);
+ infoFactory.addAttribute("classLoader", ClassLoader.class, false);
+
- infoFactory.addOperation("getInternalObject");
- infoFactory.setConstructor(new String[] { "className", "initParams" });
+ infoFactory.setConstructor(new String[] { "className", "initParams", "ConfigurationFactory", "classLoader" });
GBEAN_INFO = infoFactory.getBeanInfo();
}
Modified: geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatContainer.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatContainer.java?rev=778726&r1=778725&r2=778726&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatContainer.java (original)
+++ geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatContainer.java Tue May 26 14:50:40 2009
@@ -45,6 +45,7 @@
import org.apache.geronimo.tomcat.util.SecurityHolder;
import org.apache.geronimo.webservices.SoapHandler;
import org.apache.geronimo.webservices.WebServiceContainer;
+import org.apache.geronimo.security.jaas.ConfigurationFactory;
import org.apache.naming.resources.DirContextURLStreamHandlerFactory;
@@ -293,10 +294,7 @@
}
//Get the security-realm-name if there is one
- String securityRealmName = null;
- SecurityHolder secHolder = ctx.getSecurityHolder();
- if (secHolder != null)
- securityRealmName = secHolder.getSecurityRealm();
+ SecurityHolder secHolder = ctx.getSecurityHolder() == null? new SecurityHolder(): ctx.getSecurityHolder();
//Did we declare a GBean at the context level?
if (ctx.getRealm() != null) {
@@ -304,54 +302,36 @@
//Allow for the <security-realm-name> override from the
//geronimo-web.xml file to be used if our Realm is a JAAS type
- if (securityRealmName != null) {
+ if (secHolder.getConfigurationFactory() != null) {
if (realm instanceof JAASRealm) {
- ((JAASRealm) realm).setAppName(securityRealmName);
+ ((JAASRealm) realm).setAppName(secHolder.getConfigurationFactory().getConfigurationName());
}
}
anotherCtxObj.setRealm(realm);
} else {
Realm realm = host.getRealm();
//Check and see if we have a declared realm name and no match to a parent name
- if (securityRealmName != null) {
- String parentRealmName = null;
- if (realm instanceof JAASRealm) {
- parentRealmName = ((JAASRealm) realm).getAppName();
- }
-
- //Do we have a match to a parent?
- if (!securityRealmName.equals(parentRealmName)) {
- //No...we need to create a default adapter
-
+ if (secHolder.getConfigurationFactory() != null) {
//Is the context requiring JACC?
if (secHolder.isSecurity()) {
//JACC
- realm = new TomcatGeronimoRealm();
+ realm = new TomcatGeronimoRealm(secHolder.getConfigurationFactory());
} else {
//JAAS
- realm = new TomcatJAASRealm();
+ realm = new TomcatJAASRealm(secHolder.getConfigurationFactory());
((JAASRealm) realm).setUserClassNames("org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal");
((JAASRealm) realm).setRoleClassNames("org.apache.geronimo.security.realm.providers.GeronimoGroupPrincipal");
}
if (log.isDebugEnabled()) {
- log.debug("The security-realm-name '" + securityRealmName +
+ log.debug("The security-realm-name '" + secHolder.getConfigurationFactory().getConfigurationName() +
"' was specified and a parent (Engine/Host) is not named the same or no RealmGBean was configured for this context. " +
"Creating a default " + realm.getClass().getName() +
" adapter for this context.");
}
- ((JAASRealm) realm).setAppName(securityRealmName);
-
anotherCtxObj.setRealm(realm);
- } else {
- //Since the parent holds a realm, no need to set the parent realm for the child context
- //For the getRealm() method will automatically delegate the request to its parent
- //And if we set the parent's realm to the child context, it will make the realm replace its initial container
- //with the child context, somewhat it will cause the child context could not be GCed after it is destroyed.
- //anotherCtxObj.setRealm(realm);
- }
- } else {
+ } else {
//The same reason with the above
//anotherCtxObj.setRealm(realm);
}
@@ -405,8 +385,8 @@
embedded.removeConnector(connector);
}
- public void addWebService(String contextPath, String[] virtualHosts, WebServiceContainer webServiceContainer, String securityRealmName, String realmName, String transportGuarantee, String authMethod, String[] protectedMethods, ClassLoader classLoader) throws Exception {
- Context webServiceContext = embedded.createEJBWebServiceContext(contextPath, webServiceContainer, securityRealmName, realmName, transportGuarantee, authMethod, protectedMethods, classLoader);
+ public void addWebService(String contextPath, String[] virtualHosts, WebServiceContainer webServiceContainer, ConfigurationFactory configurationFactory, String realmName, String transportGuarantee, String authMethod, String[] protectedMethods, ClassLoader classLoader) throws Exception {
+ Context webServiceContext = embedded.createEJBWebServiceContext(contextPath, webServiceContainer, configurationFactory, realmName, transportGuarantee, authMethod, protectedMethods, classLoader);
String virtualServer;
if (virtualHosts != null && virtualHosts.length > 0) {
Modified: geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatEJBWebServiceContext.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatEJBWebServiceContext.java?rev=778726&r1=778725&r2=778726&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatEJBWebServiceContext.java (original)
+++ geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatEJBWebServiceContext.java Tue May 26 14:50:40 2009
@@ -47,6 +47,7 @@
import org.slf4j.LoggerFactory;
import org.apache.geronimo.tomcat.realm.TomcatEJBWSGeronimoRealm;
import org.apache.geronimo.webservices.WebServiceContainer;
+import org.apache.geronimo.security.jaas.ConfigurationFactory;
public class TomcatEJBWebServiceContext extends StandardContext{
@@ -58,7 +59,7 @@
private final ClassLoader classLoader;
private final Set<String> secureMethods;
- public TomcatEJBWebServiceContext(String contextPath, WebServiceContainer webServiceContainer, String securityRealmName, String realmName, String transportGuarantee, String authMethod, String[] protectedMethods, ClassLoader classLoader) {
+ public TomcatEJBWebServiceContext(String contextPath, WebServiceContainer webServiceContainer, ConfigurationFactory configurationFactory, String realmName, String transportGuarantee, String authMethod, String[] protectedMethods, ClassLoader classLoader) {
this.contextPath = contextPath;
this.webServiceContainer = webServiceContainer;
this.secureMethods = initSecureMethods(protectedMethods);
@@ -68,14 +69,10 @@
this.setDelegate(true);
log.debug("EJB Webservice Context = " + contextPath);
- if (securityRealmName != null) {
+ if (configurationFactory != null) {
- TomcatEJBWSGeronimoRealm realm = new TomcatEJBWSGeronimoRealm();
- realm.setAppName(securityRealmName);
- realm.setUserClassNames("org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal");
- realm.setRoleClassNames("org.apache.geronimo.security.realm.providers.GeronimoGroupPrincipal");
+ TomcatEJBWSGeronimoRealm realm = new TomcatEJBWSGeronimoRealm(configurationFactory);
setRealm(realm);
- this.realm = realm;
if ("NONE".equals(transportGuarantee)) {
isSecureTransportGuarantee = false;
Modified: geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatEngine.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatEngine.java?rev=778726&r1=778725&r2=778726&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatEngine.java (original)
+++ geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatEngine.java Tue May 26 14:50:40 2009
@@ -37,12 +37,6 @@
if (configured != null)
return configured;
}
-
- //No realms found up the chain, so lets create a default JAAS Realm
- TomcatJAASRealm defaultRealm = new TomcatJAASRealm();
- defaultRealm.setUserClassNames("org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal");
- defaultRealm.setRoleClassNames("org.apache.geronimo.security.realm.providers.GeronimoGroupPrincipal");
- this.setRealm(defaultRealm);
- return defaultRealm;
+ return null;
}
}
Modified: geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatGeronimoEmbedded.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatGeronimoEmbedded.java?rev=778726&r1=778725&r2=778726&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatGeronimoEmbedded.java (original)
+++ geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatGeronimoEmbedded.java Tue May 26 14:50:40 2009
@@ -23,6 +23,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.geronimo.webservices.WebServiceContainer;
+import org.apache.geronimo.security.jaas.ConfigurationFactory;
/**
* @version $Rev$ $Date$
@@ -56,7 +57,7 @@
public Context createEJBWebServiceContext(String contextPath,
WebServiceContainer webServiceContainer,
- String securityRealmName,
+ ConfigurationFactory configurationFactory,
String realmName,
String transportGuarantee,
String authMethod,
@@ -66,7 +67,7 @@
if( log.isDebugEnabled() )
log.debug("Creating EJBWebService context '" + contextPath + "'.");
- TomcatEJBWebServiceContext context = new TomcatEJBWebServiceContext(contextPath, webServiceContainer, securityRealmName, realmName, transportGuarantee, authMethod, protectedMethods, classLoader);
+ TomcatEJBWebServiceContext context = new TomcatEJBWebServiceContext(contextPath, webServiceContainer, configurationFactory, realmName, transportGuarantee, authMethod, protectedMethods, classLoader);
ContextConfig config = new ContextConfig();
config.setCustomAuthenticators(authenticators);
Modified: geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatWebAppContext.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatWebAppContext.java?rev=778726&r1=778725&r2=778726&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatWebAppContext.java (original)
+++ geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatWebAppContext.java Tue May 26 14:50:40 2009
@@ -63,6 +63,7 @@
import org.apache.geronimo.naming.enc.EnterpriseNamingContext;
import org.apache.geronimo.security.jacc.RunAsSource;
import org.apache.geronimo.security.SecurityNames;
+import org.apache.geronimo.security.jaas.ConfigurationFactory;
import org.apache.geronimo.tomcat.cluster.CatalinaClusterGBean;
import org.apache.geronimo.tomcat.stats.ModuleStats;
import org.apache.geronimo.tomcat.util.SecurityHolder;
@@ -101,7 +102,6 @@
private final Set applicationManagedSecurityResources;
private final TrackedConnectionAssociator trackedConnectionAssociator;
private final SecurityHolder securityHolder;
- private final RunAsSource runAsSource;
private final J2EEServer server;
private final Map webServices;
private final String objectName;
@@ -119,7 +119,7 @@
private boolean reset = true;
private final Valve clusteredValve;
-
+
public TomcatWebAppContext(
ClassLoader classLoader,
String objectName,
@@ -134,7 +134,7 @@
TrackedConnectionAssociator trackedConnectionAssociator,
TomcatContainer container,
RunAsSource runAsSource,
- ObjectRetriever tomcatRealm,
+ ConfigurationFactory configurationFactory, ObjectRetriever tomcatRealm,
ObjectRetriever clusteredValveRetriever,
ValveGBean tomcatValveChain,
LifecycleListenerGBean lifecycleListenerChain,
@@ -186,10 +186,9 @@
this.trackedConnectionAssociator = trackedConnectionAssociator;
this.server = server;
- this.runAsSource = runAsSource == null? RunAsSource.NULL: runAsSource;
if (securityHolder != null) {
- securityHolder.setDefaultSubject(this.runAsSource.getDefaultSubject());
- securityHolder.setRunAsSource(this.runAsSource);
+ securityHolder.setRunAsSource(runAsSource == null? RunAsSource.NULL: runAsSource);
+ securityHolder.setConfigurationFactory(configurationFactory);
}
@@ -570,6 +569,7 @@
infoBuilder.addReference("Container", TomcatContainer.class, GBeanInfoBuilder.DEFAULT_J2EE_TYPE);
infoBuilder.addReference("RunAsSource", RunAsSource.class, SecurityNames.JACC_MANAGER);
+ infoBuilder.addReference("ConfigurationFactory", ConfigurationFactory.class);
infoBuilder.addReference("TomcatRealm", ObjectRetriever.class);
infoBuilder.addReference(GBEAN_REF_CLUSTERED_VALVE_RETRIEVER, ObjectRetriever.class);
infoBuilder.addReference("TomcatValveChain", ValveGBean.class);
@@ -602,6 +602,7 @@
"TrackedConnectionAssociator",
"Container",
"RunAsSource",
+ "ConfigurationFactory",
"TomcatRealm",
GBEAN_REF_CLUSTERED_VALVE_RETRIEVER,
"TomcatValveChain",
Modified: geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/realm/TomcatEJBWSGeronimoRealm.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/realm/TomcatEJBWSGeronimoRealm.java?rev=778726&r1=778725&r2=778726&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/realm/TomcatEJBWSGeronimoRealm.java (original)
+++ geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/realm/TomcatEJBWSGeronimoRealm.java Tue May 26 14:50:40 2009
@@ -22,6 +22,7 @@
import org.apache.catalina.connector.Response;
import org.apache.catalina.deploy.SecurityConstraint;
import org.apache.catalina.Context;
+import org.apache.geronimo.security.jaas.ConfigurationFactory;
/**
* TomcatEJBWSGeronimoRealm is intended only for use with ejb web services in tomcat.
@@ -34,6 +35,10 @@
*/
public class TomcatEJBWSGeronimoRealm extends TomcatGeronimoRealm {
+ public TomcatEJBWSGeronimoRealm(ConfigurationFactory configurationFactory) {
+ super(configurationFactory);
+ }
+
public boolean hasResourcePermission(Request request,
Response response,
SecurityConstraint[] constraints,
Modified: geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/realm/TomcatGeronimoRealm.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/realm/TomcatGeronimoRealm.java?rev=778726&r1=778725&r2=778726&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/realm/TomcatGeronimoRealm.java (original)
+++ geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/realm/TomcatGeronimoRealm.java Tue May 26 14:50:40 2009
@@ -41,6 +41,7 @@
import org.apache.catalina.deploy.SecurityConstraint;
import org.apache.catalina.realm.JAASRealm;
import org.apache.geronimo.security.ContextManager;
+import org.apache.geronimo.security.jaas.ConfigurationFactory;
import org.apache.geronimo.security.realm.providers.CertificateChainCallbackHandler;
import org.apache.geronimo.security.realm.providers.PasswordCallbackHandler;
import org.apache.geronimo.tomcat.JAASTomcatPrincipal;
@@ -60,15 +61,17 @@
/**
* Descriptive information about this <code>Realm</code> implementation.
*/
- protected static final String info = "org.apache.geronimo.tomcat.TomcatGeronimoRealm/1.0";
+ protected static final String info = "org.apache.geronimo.tomcat.TomcatGeronimoRealm/1.1";
/**
* Descriptive information about this <code>Realm</code> implementation.
*/
protected static final String name = "TomcatGeronimoRealm";
- public TomcatGeronimoRealm() {
+ private final ConfigurationFactory configurationFactory;
+ public TomcatGeronimoRealm(ConfigurationFactory configurationFactory) {
+ this.configurationFactory = configurationFactory;
}
public static String setRequestWrapperName(String requestWrapperName) {
@@ -259,11 +262,8 @@
if ((principalName != null) && (!principalName.equals(""))) {
LoginContext loginContext = null;
- if (appName == null)
- appName = "Tomcat";
-
if (log.isDebugEnabled())
- log.debug(sm.getString("jaasRealm.beginLogin", principalName, appName));
+ log.debug(sm.getString("jaasRealm.beginLogin", principalName, configurationFactory.getConfigurationName()));
// What if the LoginModule is in the container class loader ?
ClassLoader ocl = null;
@@ -274,7 +274,7 @@
}
try {
- loginContext = ContextManager.login(appName, callbackHandler);
+ loginContext = ContextManager.login(configurationFactory.getConfigurationName(), callbackHandler, configurationFactory.getConfiguration());
} catch (AccountExpiredException e) {
if (log.isDebugEnabled())
log.debug(sm.getString("jaasRealm.accountExpired", principalName));
Modified: geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/realm/TomcatJAASRealm.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/realm/TomcatJAASRealm.java?rev=778726&r1=778725&r2=778726&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/realm/TomcatJAASRealm.java (original)
+++ geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/realm/TomcatJAASRealm.java Tue May 26 14:50:40 2009
@@ -21,6 +21,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.geronimo.security.ContextManager;
+import org.apache.geronimo.security.jaas.ConfigurationFactory;
import org.apache.geronimo.tomcat.JAASTomcatPrincipal;
import javax.security.auth.Subject;
@@ -38,20 +39,21 @@
public class TomcatJAASRealm extends JAASRealm implements Cloneable {
private static final Logger log = LoggerFactory.getLogger(TomcatJAASRealm.class);
- private static final String DEFAULT_NAME = "tomcat";
-
/**
* Descriptive information about this <code>Realm</code> implementation.
*/
- protected static final String info = "org.apache.geronimo.tomcat.realm.TomcatJAASRealm/1.0";
+ protected static final String info = "org.apache.geronimo.tomcat.realm.TomcatJAASRealm/1.1";
/**
* Descriptive information about this <code>Realm</code> implementation.
*/
protected static final String name = "TomcatJAASRealm";
- public TomcatJAASRealm() {
+ private final ConfigurationFactory configurationFactory;
+
+ public TomcatJAASRealm(ConfigurationFactory configurationFactory) {
super();
+ this.configurationFactory = configurationFactory;
}
@@ -74,11 +76,9 @@
// Establish a LoginContext to use for authentication
try {
LoginContext loginContext = null;
- if (appName == null)
- appName = DEFAULT_NAME;
if (log.isDebugEnabled())
- log.debug(sm.getString("jaasRealm.beginLogin", username, appName));
+ log.debug(sm.getString("jaasRealm.beginLogin", username, configurationFactory.getConfigurationName()));
// What if the LoginModule is in the container class loader ?
ClassLoader ocl = null;
@@ -89,7 +89,7 @@
}
try {
- loginContext = ContextManager.login(appName, new JAASCallbackHandler(this, username, credentials));
+ loginContext = ContextManager.login(configurationFactory.getConfigurationName(), new JAASCallbackHandler(this, username, credentials), configurationFactory.getConfiguration());
} catch (AccountExpiredException e) {
if (log.isDebugEnabled())
log.debug(sm.getString("jaasRealm.accountExpired", username));
Modified: geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/util/SecurityHolder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/util/SecurityHolder.java?rev=778726&r1=778725&r2=778726&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/util/SecurityHolder.java (original)
+++ geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/util/SecurityHolder.java Tue May 26 14:50:40 2009
@@ -21,6 +21,7 @@
import javax.security.auth.Subject;
import org.apache.geronimo.security.jacc.RunAsSource;
+import org.apache.geronimo.security.jaas.ConfigurationFactory;
public class SecurityHolder implements Serializable
{
@@ -28,27 +29,13 @@
private static final long serialVersionUID = 3761404231197734961L;
private String policyContextID;
- private Subject defaultSubject;
- private String securityRealm;
private boolean security;
- private RunAsSource runAsSource;
-
- public String getSecurityRealm() {
- return securityRealm;
- }
-
- public void setSecurityRealm(String securityRealm) {
- this.securityRealm = securityRealm;
- }
+ private transient ConfigurationFactory configurationFactory;
+ private transient RunAsSource runAsSource;
public Subject getDefaultSubject()
{
- return defaultSubject;
- }
-
- public void setDefaultSubject(Subject defaultSubject)
- {
- this.defaultSubject = defaultSubject;
+ return runAsSource.getDefaultSubject();
}
public String getPolicyContextID()
@@ -77,4 +64,11 @@
this.runAsSource = runAsSource;
}
+ public ConfigurationFactory getConfigurationFactory() {
+ return configurationFactory;
+ }
+
+ public void setConfigurationFactory(ConfigurationFactory configurationFactory) {
+ this.configurationFactory = configurationFactory;
+ }
}
Modified: geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/test/java/org/apache/geronimo/tomcat/AbstractWebModuleTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/test/java/org/apache/geronimo/tomcat/AbstractWebModuleTest.java?rev=778726&r1=778725&r2=778726&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/test/java/org/apache/geronimo/tomcat/AbstractWebModuleTest.java (original)
+++ geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/test/java/org/apache/geronimo/tomcat/AbstractWebModuleTest.java Tue May 26 14:50:40 2009
@@ -59,7 +59,7 @@
*/
public abstract class AbstractWebModuleTest extends TestSupport {
- protected ClassLoader cl;
+ protected ClassLoader cl = this.getClass().getClassLoader();
protected final static String securityRealmName = "demo-properties-realm";
protected ConnectorGBean connector;
protected TomcatContainer container;
@@ -68,7 +68,7 @@
private ConnectionTrackingCoordinator connectionTrackingCoordinator;
protected static final String POLICY_CONTEXT_ID = "securetest";
- private GeronimoLoginConfiguration loginConfiguration;
+ protected GenericSecurityRealm realm;
protected TomcatWebAppContext setUpInsecureAppContext(URI relativeWebAppRoot, URL configurationBaseURL, SecurityHolder securityHolder, RunAsSource runAsSource, ObjectRetriever tomcatRealm, ValveGBean valveChain) throws Exception {
@@ -85,6 +85,7 @@
connectionTrackingCoordinator,
container,
runAsSource,
+ securityHolder == null? null: securityHolder.getConfigurationFactory(),
tomcatRealm,
null,
valveChain,
@@ -107,7 +108,7 @@
protected TomcatWebAppContext setUpSecureAppContext(Map roleDesignates, Map principalRoleMap, ComponentPermissions componentPermissions, RealmGBean realm, SecurityHolder securityHolder) throws Exception {
ApplicationPolicyConfigurationManager jacc = setUpJACC(roleDesignates, principalRoleMap, componentPermissions, POLICY_CONTEXT_ID);
-
+ securityHolder.setConfigurationFactory(this.realm);
URL configurationBaseURL = new File(BASEDIR, "src/test/resources/deployables/war3/WEB-INF/web.xml").toURL();
return setUpInsecureAppContext(new File(BASEDIR, "src/test/resources/deployables/war3/").toURI(),
configurationBaseURL,
@@ -143,29 +144,23 @@
PrincipalInfo.PrincipalEditor principalEditor = new PrincipalInfo.PrincipalEditor();
principalEditor.setAsText("metro,org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal");
- GenericSecurityRealm realm = new GenericSecurityRealm(domainName, loginModuleUse, true, null, serverInfo, cl, null);
-
- loginConfiguration = new GeronimoLoginConfiguration(Collections.<ConfigurationEntryFactory>singleton(realm), true);
- loginConfiguration.doStart();
-
+ realm = new GenericSecurityRealm(domainName, loginModuleUse, true, true, serverInfo, cl, null);
}
protected void tearDownSecurity() throws Exception {
- loginConfiguration.doStop();
}
protected void init(String realmClass) throws Exception {
- cl = this.getClass().getClassLoader();
RealmGBean realm = null;
- if (realmClass != null) {
- Map initParams = new HashMap();
- initParams.put("userClassNames", "org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal");
- initParams.put("roleClassNames", "org.apache.geronimo.security.realm.providers.GeronimoGroupPrincipal");
- realm = new RealmGBean(realmClass, initParams);
- realm.doStart();
- }
+// if (realmClass != null) {
+// Map initParams = new HashMap();
+// initParams.put("userClassNames", "org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal");
+// initParams.put("roleClassNames", "org.apache.geronimo.security.realm.providers.GeronimoGroupPrincipal");
+// realm = new RealmGBean(realmClass, initParams, null, null);
+// realm.doStart();
+// }
//Default Host
Map initParams = new HashMap();
@@ -185,6 +180,7 @@
null,
null,
null,
+ null,
null);
engine.doStart();
Modified: geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/test/java/org/apache/geronimo/tomcat/ContainerTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/test/java/org/apache/geronimo/tomcat/ContainerTest.java?rev=778726&r1=778725&r2=778726&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/test/java/org/apache/geronimo/tomcat/ContainerTest.java (original)
+++ geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/test/java/org/apache/geronimo/tomcat/ContainerTest.java Tue May 26 14:50:40 2009
@@ -62,7 +62,7 @@
String contextPath = "/foo/webservice.ws";
MockWebServiceContainer webServiceInvoker = new MockWebServiceContainer();
- container.addWebService(contextPath, null, webServiceInvoker, securityRealmName, securityRealmName, "NONE", "BASIC", null, cl);
+ container.addWebService(contextPath, null, webServiceInvoker, realm, securityRealmName, "NONE", "BASIC", null, cl);
//Veryify its secured
HttpURLConnection connection = (HttpURLConnection) new URL(connector.getConnectUrl() + contextPath).openConnection();
Modified: geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/test/java/org/apache/geronimo/tomcat/JAASSecurityTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/test/java/org/apache/geronimo/tomcat/JAASSecurityTest.java?rev=778726&r1=778725&r2=778726&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/test/java/org/apache/geronimo/tomcat/JAASSecurityTest.java (original)
+++ geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/test/java/org/apache/geronimo/tomcat/JAASSecurityTest.java Tue May 26 14:50:40 2009
@@ -151,20 +151,21 @@
initParams.put("userClassNames", "org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal");
initParams.put("roleClassNames", "org.apache.geronimo.security.realm.providers.GeronimoGroupPrincipal");
- RealmGBean realm = new RealmGBean("org.apache.geronimo.tomcat.realm.TomcatJAASRealm", initParams);
- realm.doStart();
+// RealmGBean realm = new RealmGBean("org.apache.geronimo.tomcat.realm.TomcatJAASRealm", initParams);
+// realm.doStart();
PermissionCollection excludedPermissions = new Permissions();
PermissionCollection uncheckedPermissions = new Permissions();
ComponentPermissions componentPermissions = new ComponentPermissions(excludedPermissions, uncheckedPermissions, new HashMap());
//Force a new realm name and ignore the application name
SecurityHolder securityHolder = new SecurityHolder();
- securityHolder.setSecurityRealm(securityRealmName);
+ securityHolder.setSecurity(false);//redundant: forces use of TomcatJAASRealm not TomcatGeronimoRealm
+ securityHolder.setConfigurationFactory(this.realm);
CredentialStore credentialStore = null;
setUpSecureAppContext(new HashMap(),
new HashMap(),
componentPermissions,
- realm,
+ null,
securityHolder
);
}
@@ -174,8 +175,8 @@
protected void setUp() throws Exception {
super.setUp();
- super.init("org.apache.geronimo.tomcat.realm.TomcatJAASRealm");
setUpSecurityService();
+ super.init(null);
}
protected void tearDown() throws Exception {
Modified: geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/test/java/org/apache/geronimo/tomcat/JACCSecurityTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/test/java/org/apache/geronimo/tomcat/JACCSecurityTest.java?rev=778726&r1=778725&r2=778726&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/test/java/org/apache/geronimo/tomcat/JACCSecurityTest.java (original)
+++ geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6/src/test/java/org/apache/geronimo/tomcat/JACCSecurityTest.java Tue May 26 14:50:40 2009
@@ -161,8 +161,6 @@
SecurityHolder securityHolder = new SecurityHolder();
securityHolder.setSecurity(true);
securityHolder.setPolicyContextID(POLICY_CONTEXT_ID);
-// securityHolder.setDefaultSubject(defaultPrincipal);
- securityHolder.setSecurityRealm(securityRealmName);
return setUpSecureAppContext(roleDesignates,
principalRoleMap,
componentPermissions,
@@ -176,7 +174,7 @@
protected void setUp() throws Exception {
super.setUp();
- super.init("org.apache.geronimo.tomcat.realm.TomcatGeronimoRealm");
+ super.init(null);
}
protected void tearDown() throws Exception {
Modified: geronimo/server/trunk/plugins/tomcat/tomcat6/src/main/plan/plan.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/tomcat/tomcat6/src/main/plan/plan.xml?rev=778726&r1=778725&r2=778726&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/tomcat/tomcat6/src/main/plan/plan.xml (original)
+++ geronimo/server/trunk/plugins/tomcat/tomcat6/src/main/plan/plan.xml Tue May 26 14:50:40 2009
@@ -188,6 +188,9 @@
roleClassNames=org.apache.geronimo.security.realm.providers.GeronimoGroupPrincipal
appName=DefaultJAASRealm
</attribute>
+ <reference name="ConfigurationFactory">
+ <name>geronimo-admin</name>
+ </reference>
</gbean>
<!-- Host -->
Modified: geronimo/server/trunk/plugins/webservices/geronimo-webservices/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/webservices/geronimo-webservices/pom.xml?rev=778726&r1=778725&r2=778726&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/webservices/geronimo-webservices/pom.xml (original)
+++ geronimo/server/trunk/plugins/webservices/geronimo-webservices/pom.xml Tue May 26 14:50:40 2009
@@ -58,6 +58,12 @@
</dependency>
<dependency>
+ <groupId>org.apache.geronimo.framework</groupId>
+ <artifactId>geronimo-security</artifactId>
+ <version>${version}</version>
+ </dependency>
+
+ <dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-jaxrpc_1.1_spec</artifactId>
<scope>provided</scope>
Modified: geronimo/server/trunk/plugins/webservices/geronimo-webservices/src/main/java/org/apache/geronimo/webservices/SoapHandler.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/webservices/geronimo-webservices/src/main/java/org/apache/geronimo/webservices/SoapHandler.java?rev=778726&r1=778725&r2=778726&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/webservices/geronimo-webservices/src/main/java/org/apache/geronimo/webservices/SoapHandler.java (original)
+++ geronimo/server/trunk/plugins/webservices/geronimo-webservices/src/main/java/org/apache/geronimo/webservices/SoapHandler.java Tue May 26 14:50:40 2009
@@ -16,12 +16,14 @@
*/
package org.apache.geronimo.webservices;
+import org.apache.geronimo.security.jaas.ConfigurationFactory;
+
/**
* @version $Rev$ $Date$
*/
public interface SoapHandler {
- void addWebService(String contextPath, String[] virtualHosts, WebServiceContainer webServiceContainer, String securityRealmName, String realmName, String transportGuarantee, String authMethod, String[] protectedMethods, ClassLoader classLoader) throws Exception;
+ void addWebService(String contextPath, String[] virtualHosts, WebServiceContainer webServiceContainer, ConfigurationFactory configurationFactory, String realmName, String transportGuarantee, String authMethod, String[] protectedMethods, ClassLoader classLoader) throws Exception;
void removeWebService(String contextPath);