1
2
3
4
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
21
22
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
31
32
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
45
46
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
57
58
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
71
72 static public X509Certificate getUserCertificate() {
73 return (X509Certificate) certificate.get();
74 }
75
76
77
78
79 static public String getUserDN() {
80 return CertToolkit.getUserDN(getUserCertificate());
81 }
82
83
84
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 }