[jboss-cvs] JBossAS SVN: r78378 - trunk/tomcat/src/main/org/jboss/web/tomcat/security.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Sep 10 17:00:18 EDT 2008
Author: anil.saldhana at jboss.com
Date: 2008-09-10 17:00:18 -0400 (Wed, 10 Sep 2008)
New Revision: 78378
Modified:
trunk/tomcat/src/main/org/jboss/web/tomcat/security/SecurityContextEstablishmentValve.java
Log:
JBAS-5946: SecurityContextEstablishmentValve needs to handle the current security context correctly
Modified: trunk/tomcat/src/main/org/jboss/web/tomcat/security/SecurityContextEstablishmentValve.java
===================================================================
--- trunk/tomcat/src/main/org/jboss/web/tomcat/security/SecurityContextEstablishmentValve.java 2008-09-10 20:25:06 UTC (rev 78377)
+++ trunk/tomcat/src/main/org/jboss/web/tomcat/security/SecurityContextEstablishmentValve.java 2008-09-10 21:00:18 UTC (rev 78378)
@@ -34,7 +34,6 @@
import org.jboss.security.SecurityRolesAssociation;
import org.jboss.security.SecurityUtil;
-//$Id$
/**
* Establish the Security Context
@@ -45,16 +44,19 @@
public class SecurityContextEstablishmentValve extends ValveBase
{
private String configuredSecurityDomainName;
- private String securityContextClassName;
- private String defaultSecurityDomain;
+ private String securityContextClassName;
private ISecurityManagement securityManagement;
public SecurityContextEstablishmentValve(String configuredSecurityDomain,
String defaultSecurityDomain, String fqnClass,
ISecurityManagement securityManagement)
{
- this.configuredSecurityDomainName = configuredSecurityDomain;
- this.defaultSecurityDomain = defaultSecurityDomain;
+ String securityDomain = defaultSecurityDomain;
+
+ if(configuredSecurityDomain != null)
+ securityDomain = configuredSecurityDomain;
+
+ this.configuredSecurityDomainName = SecurityUtil.unprefixSecurityDomain(securityDomain);
this.securityContextClassName = fqnClass;
this.securityManagement = securityManagement;
}
@@ -62,30 +64,24 @@
@Override
public void invoke(Request request, Response response)
throws IOException, ServletException
- {
+ {
+ SecurityContext cachedContext = null;
+
boolean createdSecurityContext = false;
//Set the security context if one is unavailable
SecurityContext sc = SecurityAssociationActions.getSecurityContext();
+ if(sc != null &&
+ sc.getSecurityDomain().equals(configuredSecurityDomainName) == false)
+ {
+ cachedContext = sc;
+ SecurityContext newSC = createSecurityContext();
+ SecurityAssociationActions.setSecurityContext(newSC);
+ createdSecurityContext = true;
+ }
+
if(sc == null)
{
- String securityDomain = configuredSecurityDomainName;
- if(securityDomain != null)
- securityDomain = securityDomain.trim();
-
- if(securityDomain == null)
- securityDomain = SecurityUtil.unprefixSecurityDomain(defaultSecurityDomain);
- else
- securityDomain = SecurityUtil.unprefixSecurityDomain(securityDomain);
- try
- {
- sc = SecurityAssociationActions.createSecurityContext(securityDomain,
- this.securityContextClassName);
- }
- catch (PrivilegedActionException e)
- {
- throw new RuntimeException(e);
- }
- sc.setSecurityManagement(securityManagement);
+ sc = createSecurityContext();
SecurityAssociationActions.setSecurityContext(sc);
createdSecurityContext = true;
}
@@ -102,6 +98,26 @@
{
SecurityAssociationActions.clearSecurityContext();
}
+ if(cachedContext != null)
+ SecurityAssociationActions.setSecurityContext(cachedContext);
}
}
+
+ private SecurityContext createSecurityContext()
+ {
+ SecurityContext securityContext = null;
+ try
+ {
+ securityContext =
+ SecurityAssociationActions.createSecurityContext(this.configuredSecurityDomainName,
+ this.securityContextClassName);
+ }
+ catch (PrivilegedActionException e)
+ {
+ throw new RuntimeException(e);
+ }
+
+ securityContext.setSecurityManagement(securityManagement);
+ return securityContext;
+ }
}
\ No newline at end of file
More information about the jboss-cvs-commits
mailing list