01: /*
02: * <copyright>
03: *
04: * Copyright 1997-2004 Networks Associates Technology, Inc
05: * under sponsorship of the Defense Advanced Research Projects
06: * Agency (DARPA).
07: *
08: * You can redistribute this software and/or modify it under the
09: * terms of the Cougaar Open Source License as published on the
10: * Cougaar Open Source Website (www.cougaar.org).
11: *
12: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
13: * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
14: * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
15: * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
16: * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
17: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
18: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
19: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
20: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
22: * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23: *
24: * </copyright>
25: *
26: * Created on September 12, 2001, 10:55 AM
27: */
28:
29: package org.cougaar.lib.web.tomcat;
30:
31: import java.lang.reflect.Method;
32:
33: import org.apache.catalina.Context;
34: import org.apache.catalina.core.StandardContext;
35:
36: /**
37: * A Tomcat Context which will inform the security services
38: * of its creation if the security services exist and the
39: * System property
40: * <code>org.cougaar.lib.web.tomcat.enableAuth</code>
41: * is "true".
42: * <p>
43: * @property org.cougaar.lib.web.tomcat.context.manager.class
44: * classname for manager of the context, which requires
45: * a "setContext(Context)" method.
46: * @property org.cougaar.lib.web.tomcat.enableAuth
47: * enable default context manager if classname property is
48: * not specified.
49: */
50: public class SecureContext extends StandardContext {
51:
52: private static final String PROP_ENABLE = "org.cougaar.lib.web.tomcat.enableAuth";
53: private static final String PROP_CLASS = "org.cougaar.lib.web.tomcat.context.manager.class";
54: private static final String DEFAULT_CONTEXT_MANAGER = "org.cougaar.core.security.provider.ServletPolicyServiceProvider";
55:
56: public SecureContext() {
57: String contextManagerClass = System.getProperty(PROP_CLASS);
58: if (contextManagerClass == null
59: && Boolean.getBoolean(PROP_ENABLE)) {
60: contextManagerClass = DEFAULT_CONTEXT_MANAGER;
61: }
62: if (contextManagerClass != null) {
63: try {
64: Class c = Class.forName(contextManagerClass);
65: Method m = c.getMethod("setContext",
66: new Class[] { Context.class });
67: m.invoke(null, new Object[] { this });
68: } catch (ClassNotFoundException e) {
69: System.err.println("Error: Couldn't find "
70: + contextManagerClass);
71: // don't worry about it
72: } catch (Exception e) {
73: e.printStackTrace();
74: }
75: }
76: }
77: }
|