View Javadoc

1   /*
2    * CertCache.java
3    *
4    * Created on December 21, 2004, 12:54 PM
5    */
6   
7   package gov.bnl.gums.admin;
8   
9   
10  import gov.bnl.gums.util.CertToolkit;
11  
12  import java.security.cert.X509Certificate;
13  import javax.servlet.Filter;
14  import javax.servlet.ServletContext;
15  
16  import org.apache.log4j.Logger;
17  
18  
19  /**
20   * Implements the javax.servlet.Filter class and stores a user certificate
21   *
22   * @author Gabriele Carcassi, Jay Packard
23   */
24  public class CertCache implements Filter {
25  	static private Logger log = Logger.getLogger(CertCache.class);
26  	static private ServletContext context;
27  	static private ThreadLocal<X509Certificate> certificate = new ThreadLocal<X509Certificate>();
28  
29  	/**
30  	 * Get the directory path for the configuration files
31  	 * 
32  	 * @return configuration directory as String
33  	 */
34  	static public String getConfigDir() {
35  		if (context==null)
36  			throw new RuntimeException("Servlet Context not set");
37  		String base = context.getRealPath("/");
38  		String dir = base + "/WEB-INF/config";
39  		log.trace("URL to config dir: '" + dir + "'");
40  		return dir;
41  	}
42  	
43  	/**
44  	 * Get the directory path for the resource files
45  	 * 
46  	 * @return resource directory as String
47  	 */
48  	static public String getResourceDir() {
49  		String base = context.getRealPath("/");
50  		String dir = base + "/WEB-INF";
51  		log.trace("URL to resource dir: '" + dir + "'");
52  		return dir;
53  	}
54  	
55  	/**
56  	 * Get the directory path for the resource files
57  	 * 
58  	 * @return resource directory as String
59  	 */
60  	static public String getMetaDir() {
61  		if (context == null)
62  			return null;
63  		String base = context.getRealPath("/");
64  		String dir = base + "/META-INF";
65  		log.trace("URL to meta dir: '" + dir + "'");
66  		return dir;
67  	}
68  
69  	/**
70  	 * @return X509Certificate object
71  	 */
72  	static public X509Certificate getUserCertificate() {
73  		return (X509Certificate) certificate.get();
74  	}
75  
76  	/**
77  	 * @param cert
78  	 */
79      static public String getUserDN() {
80              return CertToolkit.getUserDN(getUserCertificate());
81      }
82  
83    	/**
84    	 * @param cert
85    	 */
86    	static public void setUserCertificate(X509Certificate cert) {
87    		certificate.set(cert);
88    	}
89  
90  	public void destroy() {
91  	}
92  
93  	public void doFilter(javax.servlet.ServletRequest servletRequest,
94  			javax.servlet.ServletResponse servletResponse,
95  			javax.servlet.FilterChain filterChain) throws java.io.IOException,
96  			javax.servlet.ServletException {
97  		setUserCertificate(null);
98  		if (servletRequest
99  				.getAttribute("javax.servlet.request.X509Certificate") != null) {
100 			X509Certificate cert = ((X509Certificate[]) servletRequest
101 					.getAttribute("javax.servlet.request.X509Certificate"))[0];
102 			setUserCertificate(cert);
103 		}
104 		filterChain.doFilter(servletRequest, servletResponse);
105 	}
106 
107 	public void init(javax.servlet.FilterConfig filterConfig)
108 			throws javax.servlet.ServletException {
109 		context = filterConfig.getServletContext();
110 	}
111 
112 }