[jboss-cvs] JBossAS SVN: r65385 - trunk/tomcat/src/main/org/jboss/web/tomcat/security.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Sep 13 18:08:08 EDT 2007
Author: anil.saldhana at jboss.com
Date: 2007-09-13 18:08:08 -0400 (Thu, 13 Sep 2007)
New Revision: 65385
Added:
trunk/tomcat/src/main/org/jboss/web/tomcat/security/SecurityContextEstablishmentValve.java
Log:
JBAS-4721: Usage of SecurityContextFactory and SecurityContext plus injection of SecurityManagement into ejb/web deployers
Added: trunk/tomcat/src/main/org/jboss/web/tomcat/security/SecurityContextEstablishmentValve.java
===================================================================
--- trunk/tomcat/src/main/org/jboss/web/tomcat/security/SecurityContextEstablishmentValve.java (rev 0)
+++ trunk/tomcat/src/main/org/jboss/web/tomcat/security/SecurityContextEstablishmentValve.java 2007-09-13 22:08:08 UTC (rev 65385)
@@ -0,0 +1,104 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2007, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.web.tomcat.security;
+
+import java.io.IOException;
+import java.security.PrivilegedActionException;
+
+import javax.servlet.ServletException;
+
+import org.apache.catalina.connector.Request;
+import org.apache.catalina.connector.Response;
+import org.apache.catalina.valves.ValveBase;
+import org.jboss.security.ISecurityManagement;
+import org.jboss.security.SecurityContext;
+import org.jboss.security.SecurityRolesAssociation;
+import org.jboss.security.SecurityUtil;
+
+//$Id$
+
+/**
+ * Establish the Security Context
+ * @author Anil.Saldhana at redhat.com
+ * @since Sep 12, 2007
+ * @version $Revision$
+ */
+public class SecurityContextEstablishmentValve extends ValveBase
+{
+ private String configuredSecurityDomainName;
+ private String securityContextClassName;
+ private String defaultSecurityDomain;
+ private ISecurityManagement securityManagement;
+
+ public SecurityContextEstablishmentValve(String configuredSecurityDomain,
+ String defaultSecurityDomain, String fqnClass,
+ ISecurityManagement securityManagement)
+ {
+ this.configuredSecurityDomainName = configuredSecurityDomain;
+ this.defaultSecurityDomain = defaultSecurityDomain;
+ this.securityContextClassName = fqnClass;
+ this.securityManagement = securityManagement;
+ }
+
+ @Override
+ public void invoke(Request request, Response response)
+ throws IOException, ServletException
+ {
+ boolean createdSecurityContext = false;
+ //Set the security context if one is unavailable
+ SecurityContext sc = SecurityAssociationActions.getSecurityContext();
+ if(sc == null)
+ {
+ String securityDomain = configuredSecurityDomainName;
+ 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);
+ SecurityAssociationActions.setSecurityContext(sc);
+ createdSecurityContext = true;
+ }
+
+ try
+ {
+ // Perform the request
+ getNext().invoke(request, response);
+ }
+ finally
+ {
+ SecurityRolesAssociation.setSecurityRoles(null);
+ if(createdSecurityContext)
+ {
+ SecurityAssociationActions.clearSecurityContext();
+ }
+ }
+ }
+}
More information about the jboss-cvs-commits
mailing list