annotate flys-client/src/main/java/de/intevation/flys/client/server/GGInAFilter.java @ 2952:3cacd42a0336

Filter all requests to FLYS If a user is not authenticated redirect him to the login.jsp. The GGinAFilter can be deactivated via the web.xml file. flys-client/trunk@4931 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Bjoern Ricks <bjoern.ricks@intevation.de>
date Wed, 11 Jul 2012 10:57:24 +0000
parents 6e4e4b96ca6c
children f1030909eeb6
rev   line source
2889
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.client.server;
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
2
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
3 import java.io.IOException;
2952
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
4 import java.io.InputStream;
2889
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
5
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
6 import javax.servlet.Filter;
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
7 import javax.servlet.FilterChain;
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
8 import javax.servlet.FilterConfig;
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
9 import javax.servlet.ServletException;
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
10 import javax.servlet.ServletRequest;
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
11 import javax.servlet.ServletResponse;
2893
6e4e4b96ca6c Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2889
diff changeset
12
2889
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
13 import javax.servlet.http.HttpServletRequest;
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
14 import javax.servlet.http.HttpServletResponse;
2952
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
15 import javax.servlet.http.HttpSession;
2889
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
16
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
17 import org.apache.log4j.Logger;
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
18
2952
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
19 import de.intevation.flys.client.server.was.User;
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
20
2889
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
21
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
22 /** ServletFilter used for GGInA authentification and certain authorisation. */
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
23 public class GGInAFilter implements Filter {
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
24
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
25 /** Private logger. */
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
26 private static Logger logger = Logger.getLogger(GGInAFilter.class);
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
27
2952
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
28 private boolean deactivate = false;
2889
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
29
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
30
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
31 /**
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
32 * Initialize.
2952
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
33 *
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
34 * Read FilterConfig parameter deactivate
2889
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
35 */
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
36 @Override
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
37 public void init(FilterConfig config)
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
38 throws ServletException
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
39 {
2952
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
40 String deactivate = config.getInitParameter("deactivate");
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
41 if (deactivate != null && deactivate.equals("1")) {
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
42 this.deactivate = true;
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
43 }
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
44
2889
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
45 }
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
46
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
47
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
48 /**
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
49 * Called when filter in chain invoked.
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
50 * @param req request to servlet
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
51 * @param resp response of servlet
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
52 * @param chain the filter chain
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
53 */
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
54 @Override
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
55 public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
56 throws IOException, ServletException
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
57 {
2952
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
58 if (this.deactivate) {
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
59 logger.debug("GGinAFilter is deactivated");
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
60 chain.doFilter(req, resp);
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
61 return;
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
62 }
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
63
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
64 HttpServletRequest sreq = (HttpServletRequest) req;
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
65
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
66 String requesturi = sreq.getRequestURI();
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
67
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
68 logger.debug("Request for: " + requesturi);
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
69
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
70 // Allow access to login pages
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
71 // TODO Maybe replace with Filter <url-pattern>
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
72 if (requesturi.equals("/login.jsp") || requesturi.equals("/flys/login")
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
73 || requesturi.equals("/FLYS.css")) {
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
74 logger.debug("Request for login " + requesturi);
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
75 chain.doFilter(req, resp);
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
76 return;
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
77 }
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
78
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
79 HttpSession session = sreq.getSession();
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
80
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
81 String uri = requesturi;
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
82 if (sreq.getQueryString() != null) {
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
83 uri = uri + "?" + sreq.getQueryString();
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
84 }
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
85 session.setAttribute("requesturi", uri);
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
86
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
87 User user = (User)session.getAttribute("user");
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
88 if (user == null) {
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
89 logger.debug("No user in session: " + requesturi);
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
90 this.redirect(resp);
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
91 return;
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
92 }
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
93 if (user.hasExpired()) {
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
94 logger.debug("User ticket has expired: " + requesturi);
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
95 this.redirect(resp);
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
96 return;
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
97 }
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
98
2889
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
99 logger.debug("GGInAFilter.doFilter");
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
100 chain.doFilter(req, resp);
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
101 return;
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
102 }
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
103
2952
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
104 private void redirect(ServletResponse resp) throws IOException {
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
105 logger.debug("Redirect to login");
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
106 ((HttpServletResponse) resp).sendRedirect("/login.jsp");
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
107 }
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
108
2889
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
109
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
110 /**
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
111 * Do nothing at destruction.
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
112 */
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
113 @Override
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
114 public void destroy() {
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
115 }
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
116 }
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
117 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org