annotate flys-client/src/main/java/de/intevation/flys/client/server/GGInAFilter.java @ 4284:7a94d5e7fc3d

Write the "hidden" attribute of a style into the collection's attribute when using the theme editor. Otherwise, the next time using the theme editor, the hidden attributes that should not be changed by the user are visible.
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Mon, 29 Oct 2012 07:18:42 +0100
parents fcdc0d2fdf8f
children e96f2a6e4c3e
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;
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 logger.debug("GGInAFilter.doFilter");
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
141 chain.doFilter(req, resp);
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
142 return;
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
143 }
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
144
2952
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
145 private void redirect(ServletResponse resp) throws IOException {
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
146 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
147 ((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
148 "/login.jsp");
2952
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
149 }
3cacd42a0336 Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2893
diff changeset
150
4196
e10d60d4f35b Don't always redirect if user isn't authenticated
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4195
diff changeset
151 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
152 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
153 ((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
154 }
e10d60d4f35b Don't always redirect if user isn't authenticated
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4195
diff changeset
155
e10d60d4f35b Don't always redirect if user isn't authenticated
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4195
diff changeset
156 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
157 if (redirect) {
e10d60d4f35b Don't always redirect if user isn't authenticated
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4195
diff changeset
158 this.redirect(resp);
e10d60d4f35b Don't always redirect if user isn't authenticated
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4195
diff changeset
159 }
e10d60d4f35b Don't always redirect if user isn't authenticated
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4195
diff changeset
160 else {
e10d60d4f35b Don't always redirect if user isn't authenticated
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4195
diff changeset
161 this.sendNotAuthenticated(resp);
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 }
e10d60d4f35b Don't always redirect if user isn't authenticated
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4195
diff changeset
164
2889
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 /**
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
167 * Do nothing at destruction.
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
168 */
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
169 @Override
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
170 public void destroy() {
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
171 }
2974
8255247da645 Implement re-authentication if the user (ticket) has expired.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2964
diff changeset
172
8255247da645 Implement re-authentication if the user (ticket) has expired.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2964
diff changeset
173 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
174 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
175 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
176 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
177 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
178 }
2889
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
179 }
6c613c9f3a51 Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
180 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org