annotate flys-client/src/main/java/de/intevation/flys/client/server/filter/GGInAFilter.java @ 4423:687b7a6f09aa

Move GGInAFilter and NoCacheFilter to an own package
author Björn Ricks <bjoern.ricks@intevation.de>
date Tue, 06 Nov 2012 13:39:00 +0100
parents flys-client/src/main/java/de/intevation/flys/client/server/GGInAFilter.java@e96f2a6e4c3e
children 6ef48927df38
rev   line source
4423
687b7a6f09aa Move GGInAFilter and NoCacheFilter to an own package
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4419
diff changeset
1 package de.intevation.flys.client.server.filter;
2889
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;
3485
71ba3cf3ec5e Refactor Authentication to allow to pass the Freatures to the user class
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2974
diff changeset
4 import java.util.Enumeration;
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;
3485
71ba3cf3ec5e Refactor Authentication to allow to pass the Freatures to the user class
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2974
diff changeset
9 import javax.servlet.ServletContext;
2889
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
10 import javax.servlet.ServletException;
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
11 import javax.servlet.ServletRequest;
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
12 import javax.servlet.ServletResponse;
2893
6e4e4b96ca6c Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2889
diff changeset
13
2889
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
14 import javax.servlet.http.HttpServletRequest;
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
15 import javax.servlet.http.HttpServletResponse;
2952
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
16 import javax.servlet.http.HttpSession;
2889
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
17
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
18 import org.apache.log4j.Logger;
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
19
2974
8255247da645 Implement re-authentication if the user (ticket) has expired.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2964
diff changeset
20 import de.intevation.flys.client.server.auth.Authentication;
8255247da645 Implement re-authentication if the user (ticket) has expired.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2964
diff changeset
21 import de.intevation.flys.client.server.auth.AuthenticationException;
8255247da645 Implement re-authentication if the user (ticket) has expired.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2964
diff changeset
22 import de.intevation.flys.client.server.auth.AuthenticationFactory;
2964
c12e29661e6a Login: Cast session user to abstract type not WAS specific
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2957
diff changeset
23 import de.intevation.flys.client.server.auth.User;
3485
71ba3cf3ec5e Refactor Authentication to allow to pass the Freatures to the user class
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2974
diff changeset
24 import de.intevation.flys.client.server.features.Features;
2952
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
25
2889
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
26
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
27 /** ServletFilter used for GGInA authentification and certain authorisation. */
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
28 public class GGInAFilter implements Filter {
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 /** Private logger. */
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
31 private static Logger logger = Logger.getLogger(GGInAFilter.class);
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
32
2952
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
33 private boolean deactivate = false;
2974
8255247da645 Implement re-authentication if the user (ticket) has expired.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2964
diff changeset
34 private String authmethod;
4194
17fe00c09b7c Don't redirect to request uri
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3851
diff changeset
35 private String redirecturl;
3485
71ba3cf3ec5e Refactor Authentication to allow to pass the Freatures to the user class
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2974
diff changeset
36 private ServletContext sc;
2889
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
37
3851
a4c9296f6efa Use the Context PATH servlet variable when using URLs in the GGInAFilter
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3485
diff changeset
38 public static final String LOGIN_JSP = "/login.jsp";
a4c9296f6efa Use the Context PATH servlet variable when using URLs in the GGInAFilter
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3485
diff changeset
39 public static final String LOGIN_SERVLET = "/flys/login";
a4c9296f6efa Use the Context PATH servlet variable when using URLs in the GGInAFilter
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3485
diff changeset
40 public static final String FLYS_CSS = "/FLYS.css";
a4c9296f6efa Use the Context PATH servlet variable when using URLs in the GGInAFilter
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3485
diff changeset
41
2889
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
42
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
43 /**
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
44 * Initialize.
2952
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
45 *
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
46 * Read FilterConfig parameter deactivate
2889
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 @Override
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
49 public void init(FilterConfig config)
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
50 throws ServletException
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
51 {
2952
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
52 String deactivate = config.getInitParameter("deactivate");
3485
71ba3cf3ec5e Refactor Authentication to allow to pass the Freatures to the user class
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2974
diff changeset
53 this.sc = config.getServletContext();
3851
a4c9296f6efa Use the Context PATH servlet variable when using URLs in the GGInAFilter
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3485
diff changeset
54 logger.debug("GGInAFilter context " + this.sc.getContextPath());
3485
71ba3cf3ec5e Refactor Authentication to allow to pass the Freatures to the user class
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2974
diff changeset
55 this.authmethod = sc.getInitParameter("authentication");
4194
17fe00c09b7c Don't redirect to request uri
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3851
diff changeset
56 this.redirecturl = sc.getInitParameter("redirect-url");
2955
f1030909eeb6 Check filter config in web.xml for String false to deactivate the GGInAFilter instead of "1".
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2952
diff changeset
57 if (deactivate != null && deactivate.equalsIgnoreCase("true")) {
2952
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
58 this.deactivate = true;
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
59 }
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
60
2889
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
61 }
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
62
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
63
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
64 /**
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
65 * Called when filter in chain invoked.
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
66 * @param req request to servlet
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
67 * @param resp response of servlet
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
68 * @param chain the filter chain
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
69 */
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
70 @Override
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
71 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
72 throws IOException, ServletException
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
73 {
2952
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
74 if (this.deactivate) {
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
75 logger.debug("GGinAFilter is deactivated");
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
76 chain.doFilter(req, resp);
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
77 return;
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
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
80 HttpServletRequest sreq = (HttpServletRequest) req;
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
81
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
82 String requesturi = sreq.getRequestURI();
3485
71ba3cf3ec5e Refactor Authentication to allow to pass the Freatures to the user class
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2974
diff changeset
83 for (Enumeration e = req.getAttributeNames() ; e.hasMoreElements() ;) {
71ba3cf3ec5e Refactor Authentication to allow to pass the Freatures to the user class
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2974
diff changeset
84 logger.debug(e.nextElement());
71ba3cf3ec5e Refactor Authentication to allow to pass the Freatures to the user class
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2974
diff changeset
85 }
2952
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 logger.debug("Request for: " + requesturi);
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
88
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
89 // Allow access to login pages
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
90 // TODO Maybe replace with Filter <url-pattern>
3851
a4c9296f6efa Use the Context PATH servlet variable when using URLs in the GGInAFilter
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3485
diff changeset
91 String path = this.sc.getContextPath();
a4c9296f6efa Use the Context PATH servlet variable when using URLs in the GGInAFilter
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3485
diff changeset
92 if (requesturi.equals(path + "/login.jsp") ||
a4c9296f6efa Use the Context PATH servlet variable when using URLs in the GGInAFilter
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3485
diff changeset
93 requesturi.equals(path + "/flys/login")
a4c9296f6efa Use the Context PATH servlet variable when using URLs in the GGInAFilter
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3485
diff changeset
94 || requesturi.equals(path + "/FLYS.css")) {
2952
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
95 logger.debug("Request for login " + requesturi);
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
96 chain.doFilter(req, resp);
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
97 return;
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
98 }
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
99
4196
e10d60d4f35b Don't always redirect if user isn't authenticated
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4195
diff changeset
100 boolean redirect = false;
e10d60d4f35b Don't always redirect if user isn't authenticated
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4195
diff changeset
101
2952
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
102 HttpSession session = sreq.getSession();
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
103
4195
93b53eaee401 Don't forget context path for redirect url
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4194
diff changeset
104 String uri = path + "/" + this.redirecturl;
4194
17fe00c09b7c Don't redirect to request uri
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3851
diff changeset
105
4228
fcdc0d2fdf8f Don't send 403 if accessing the root path
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4196
diff changeset
106 /* Redirect if uri is root or redirecturl */
fcdc0d2fdf8f Don't send 403 if accessing the root path
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4196
diff changeset
107 if (requesturi.equals(uri) || requesturi.equals(path + "/")) {
4196
e10d60d4f35b Don't always redirect if user isn't authenticated
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4195
diff changeset
108 redirect = true;
e10d60d4f35b Don't always redirect if user isn't authenticated
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4195
diff changeset
109 }
e10d60d4f35b Don't always redirect if user isn't authenticated
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4195
diff changeset
110
2952
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
111 if (sreq.getQueryString() != null) {
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
112 uri = uri + "?" + sreq.getQueryString();
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
113 }
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
114 session.setAttribute("requesturi", uri);
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
115
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
116 User user = (User)session.getAttribute("user");
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
117 if (user == null) {
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
118 logger.debug("No user in session: " + requesturi);
4196
e10d60d4f35b Don't always redirect if user isn't authenticated
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4195
diff changeset
119 this.handleResponse(resp, redirect);
2952
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
120 return;
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
121 }
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
122 if (user.hasExpired()) {
2974
8255247da645 Implement re-authentication if the user (ticket) has expired.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2964
diff changeset
123 // try to re-authenticate the user
2952
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
124 logger.debug("User ticket has expired: " + requesturi);
2974
8255247da645 Implement re-authentication if the user (ticket) has expired.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2964
diff changeset
125 String encoding = sreq.getCharacterEncoding();
8255247da645 Implement re-authentication if the user (ticket) has expired.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2964
diff changeset
126 try {
8255247da645 Implement re-authentication if the user (ticket) has expired.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2964
diff changeset
127 Authentication auth = this.auth(user, encoding);
8255247da645 Implement re-authentication if the user (ticket) has expired.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2964
diff changeset
128 if (auth == null || !auth.isSuccess()) {
8255247da645 Implement re-authentication if the user (ticket) has expired.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2964
diff changeset
129 logger.debug("Re-athentication not successful");
4196
e10d60d4f35b Don't always redirect if user isn't authenticated
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4195
diff changeset
130 this.handleResponse(resp, redirect);
2974
8255247da645 Implement re-authentication if the user (ticket) has expired.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2964
diff changeset
131 }
8255247da645 Implement re-authentication if the user (ticket) has expired.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2964
diff changeset
132 }
8255247da645 Implement re-authentication if the user (ticket) has expired.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2964
diff changeset
133 catch(AuthenticationException e) {
8255247da645 Implement re-authentication if the user (ticket) has expired.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2964
diff changeset
134 logger.error("Failure during re-authentication", e);
4196
e10d60d4f35b Don't always redirect if user isn't authenticated
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4195
diff changeset
135 this.handleResponse(resp, redirect);
2974
8255247da645 Implement re-authentication if the user (ticket) has expired.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2964
diff changeset
136 return;
8255247da645 Implement re-authentication if the user (ticket) has expired.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2964
diff changeset
137 }
2952
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
138 }
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
139
2889
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
140 chain.doFilter(req, resp);
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
141 return;
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
142 }
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
143
2952
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
144 private void redirect(ServletResponse resp) throws IOException {
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
145 logger.debug("Redirect to login");
3851
a4c9296f6efa Use the Context PATH servlet variable when using URLs in the GGInAFilter
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3485
diff changeset
146 ((HttpServletResponse) resp).sendRedirect(this.sc.getContextPath() +
a4c9296f6efa Use the Context PATH servlet variable when using URLs in the GGInAFilter
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3485
diff changeset
147 "/login.jsp");
2952
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
148 }
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
149
4196
e10d60d4f35b Don't always redirect if user isn't authenticated
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4195
diff changeset
150 private void sendNotAuthenticated(ServletResponse resp) throws IOException {
e10d60d4f35b Don't always redirect if user isn't authenticated
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4195
diff changeset
151 logger.debug("Send not authenticated");
e10d60d4f35b Don't always redirect if user isn't authenticated
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4195
diff changeset
152 ((HttpServletResponse)resp).sendError(HttpServletResponse.SC_FORBIDDEN, "User not authenticated");
e10d60d4f35b Don't always redirect if user isn't authenticated
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4195
diff changeset
153 }
e10d60d4f35b Don't always redirect if user isn't authenticated
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4195
diff changeset
154
e10d60d4f35b Don't always redirect if user isn't authenticated
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4195
diff changeset
155 private void handleResponse(ServletResponse resp, boolean redirect) throws IOException {
e10d60d4f35b Don't always redirect if user isn't authenticated
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4195
diff changeset
156 if (redirect) {
e10d60d4f35b Don't always redirect if user isn't authenticated
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4195
diff changeset
157 this.redirect(resp);
e10d60d4f35b Don't always redirect if user isn't authenticated
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4195
diff changeset
158 }
e10d60d4f35b Don't always redirect if user isn't authenticated
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4195
diff changeset
159 else {
e10d60d4f35b Don't always redirect if user isn't authenticated
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4195
diff changeset
160 this.sendNotAuthenticated(resp);
e10d60d4f35b Don't always redirect if user isn't authenticated
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4195
diff changeset
161 }
e10d60d4f35b Don't always redirect if user isn't authenticated
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4195
diff changeset
162 }
e10d60d4f35b Don't always redirect if user isn't authenticated
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4195
diff changeset
163
2889
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
164
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
165 /**
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
166 * Do nothing at destruction.
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
167 */
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
168 @Override
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
169 public void destroy() {
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
170 }
2974
8255247da645 Implement re-authentication if the user (ticket) has expired.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2964
diff changeset
171
8255247da645 Implement re-authentication if the user (ticket) has expired.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2964
diff changeset
172 private Authentication auth(User user, String encoding)
8255247da645 Implement re-authentication if the user (ticket) has expired.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2964
diff changeset
173 throws AuthenticationException, IOException {
3485
71ba3cf3ec5e Refactor Authentication to allow to pass the Freatures to the user class
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2974
diff changeset
174 Features features = (Features)sc.getAttribute(Features.CONTEXT_ATTRIBUTE);
2974
8255247da645 Implement re-authentication if the user (ticket) has expired.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2964
diff changeset
175 return AuthenticationFactory.getInstance(this.authmethod).auth(
3485
71ba3cf3ec5e Refactor Authentication to allow to pass the Freatures to the user class
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2974
diff changeset
176 user.getName(), user.getPassword(), encoding, features);
2974
8255247da645 Implement re-authentication if the user (ticket) has expired.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2964
diff changeset
177 }
2889
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
178 }
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
179 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org