added CookieAuthFilter.
@@ -0,0 +1,19 @@ | ||
1 | +package jp.sf.ssoproxy.filter; | |
2 | + | |
3 | +import javax.servlet.http.Cookie; | |
4 | +import javax.servlet.http.HttpServletRequest; | |
5 | + | |
6 | +public class CookieAuthFilter extends AbstractAuthFilter { | |
7 | + | |
8 | + public String getRemoteUser(HttpServletRequest request) { | |
9 | + Cookie[] cookies = request.getCookies(); | |
10 | + if (cookies != null) { | |
11 | + for (int i = 0; i < cookies.length; i++) { | |
12 | + if (currentUserKey.equals(cookies[i].getName())) { | |
13 | + return cookies[i].getValue(); | |
14 | + } | |
15 | + } | |
16 | + } | |
17 | + return null; | |
18 | + } | |
19 | +} |
@@ -1,81 +1,10 @@ | ||
1 | 1 | package jp.sf.ssoproxy.filter; |
2 | 2 | |
3 | -import java.io.IOException; | |
4 | -import java.util.Locale; | |
5 | - | |
6 | -import javax.servlet.Filter; | |
7 | -import javax.servlet.FilterChain; | |
8 | -import javax.servlet.FilterConfig; | |
9 | -import javax.servlet.ServletException; | |
10 | -import javax.servlet.ServletRequest; | |
11 | -import javax.servlet.ServletResponse; | |
12 | 3 | import javax.servlet.http.HttpServletRequest; |
13 | -import javax.servlet.http.HttpServletResponse; | |
14 | 4 | |
15 | -import jp.sf.ssoproxy.SSOProxyConstraints; | |
16 | -import jp.sf.ssoproxy.util.ErrorHandlingUtil; | |
5 | +public class SessionAuthFilter extends AbstractAuthFilter { | |
17 | 6 | |
18 | -public class SessionAuthFilter implements Filter { | |
19 | - private String errorPage; | |
20 | - | |
21 | - private Locale systemLocale; | |
22 | - | |
23 | - public void init(FilterConfig config) throws ServletException { | |
24 | - // set an error page | |
25 | - errorPage = config.getInitParameter(SSOProxyConstraints.ERROR_JSP_KEY); | |
26 | - if (errorPage == null) { | |
27 | - errorPage = SSOProxyConstraints.DEFAULT_ERROR_JSP; | |
28 | - } | |
29 | - // set a system locale | |
30 | - String value = config | |
31 | - .getInitParameter(SSOProxyConstraints.SYSTEM_LOCALE_KEY); | |
32 | - if (value != null) { | |
33 | - try { | |
34 | - String[] values = value.split("_"); | |
35 | - if (values.length == 3) { | |
36 | - systemLocale = new Locale(values[0], values[1], values[2]); | |
37 | - } else if (values.length == 2) { | |
38 | - systemLocale = new Locale(values[0], values[1]); | |
39 | - } else if (values.length == 1) { | |
40 | - systemLocale = new Locale(values[0]); | |
41 | - } else { | |
42 | - systemLocale = Locale.ENGLISH; | |
43 | - } | |
44 | - } catch (RuntimeException e) { | |
45 | - systemLocale = Locale.ENGLISH; | |
46 | - } | |
47 | - } else { | |
48 | - systemLocale = Locale.ENGLISH; | |
49 | - } | |
7 | + public String getRemoteUser(HttpServletRequest request) { | |
8 | + return (String) request.getSession().getAttribute(currentUserKey); | |
50 | 9 | } |
51 | - | |
52 | - public void destroy() { | |
53 | - | |
54 | - } | |
55 | - | |
56 | - public void doFilter(ServletRequest request, ServletResponse response, | |
57 | - FilterChain chain) throws IOException, ServletException { | |
58 | - | |
59 | - if (request instanceof HttpServletRequest | |
60 | - && response instanceof HttpServletResponse) { | |
61 | - HttpServletRequest httpRequest = (HttpServletRequest) request; | |
62 | - String remoteUser = (String) httpRequest.getSession().getAttribute( | |
63 | - SSOProxyConstraints.CURRENT_REMOTE_USER); | |
64 | - if (remoteUser != null) { | |
65 | - chain.doFilter(request, response); | |
66 | - } else { | |
67 | - // error | |
68 | - String erroCode = "000008"; | |
69 | - ErrorHandlingUtil.printLog(erroCode, null, systemLocale); | |
70 | - ErrorHandlingUtil.forwardErrorPage( | |
71 | - (HttpServletRequest) request, | |
72 | - (HttpServletResponse) response, erroCode, null, | |
73 | - errorPage); | |
74 | - } | |
75 | - } else { | |
76 | - //TODO redirect? | |
77 | - response.getWriter().write("Not supported."); | |
78 | - } | |
79 | - } | |
80 | - | |
81 | 10 | } |
@@ -0,0 +1,92 @@ | ||
1 | +package jp.sf.ssoproxy.filter; | |
2 | + | |
3 | +import java.io.IOException; | |
4 | +import java.util.Locale; | |
5 | + | |
6 | +import javax.servlet.Filter; | |
7 | +import javax.servlet.FilterChain; | |
8 | +import javax.servlet.FilterConfig; | |
9 | +import javax.servlet.ServletException; | |
10 | +import javax.servlet.ServletRequest; | |
11 | +import javax.servlet.ServletResponse; | |
12 | +import javax.servlet.http.HttpServletRequest; | |
13 | +import javax.servlet.http.HttpServletResponse; | |
14 | + | |
15 | +import jp.sf.ssoproxy.SSOProxyConstraints; | |
16 | +import jp.sf.ssoproxy.util.ErrorHandlingUtil; | |
17 | + | |
18 | +public abstract class AbstractAuthFilter implements Filter { | |
19 | + | |
20 | + protected String errorPage; | |
21 | + | |
22 | + protected Locale systemLocale; | |
23 | + | |
24 | + protected String currentUserKey; | |
25 | + | |
26 | + public void init(FilterConfig config) throws ServletException { | |
27 | + // set an current user key | |
28 | + currentUserKey = config | |
29 | + .getInitParameter(SSOProxyConstraints.CURRENT_REMOTE_USER_KEY); | |
30 | + if (currentUserKey == null) { | |
31 | + currentUserKey = SSOProxyConstraints.CURRENT_REMOTE_USER; | |
32 | + } | |
33 | + | |
34 | + // set an error page | |
35 | + errorPage = config.getInitParameter(SSOProxyConstraints.ERROR_JSP_KEY); | |
36 | + if (errorPage == null) { | |
37 | + errorPage = SSOProxyConstraints.DEFAULT_ERROR_JSP; | |
38 | + } | |
39 | + | |
40 | + // set a system locale | |
41 | + String value = config | |
42 | + .getInitParameter(SSOProxyConstraints.SYSTEM_LOCALE_KEY); | |
43 | + if (value != null) { | |
44 | + try { | |
45 | + String[] values = value.split("_"); | |
46 | + if (values.length == 3) { | |
47 | + systemLocale = new Locale(values[0], values[1], values[2]); | |
48 | + } else if (values.length == 2) { | |
49 | + systemLocale = new Locale(values[0], values[1]); | |
50 | + } else if (values.length == 1) { | |
51 | + systemLocale = new Locale(values[0]); | |
52 | + } else { | |
53 | + systemLocale = Locale.ENGLISH; | |
54 | + } | |
55 | + } catch (RuntimeException e) { | |
56 | + systemLocale = Locale.ENGLISH; | |
57 | + } | |
58 | + } else { | |
59 | + systemLocale = Locale.ENGLISH; | |
60 | + } | |
61 | + } | |
62 | + | |
63 | + public void destroy() { | |
64 | + | |
65 | + } | |
66 | + | |
67 | + public void doFilter(ServletRequest request, ServletResponse response, | |
68 | + FilterChain chain) throws IOException, ServletException { | |
69 | + | |
70 | + if (request instanceof HttpServletRequest | |
71 | + && response instanceof HttpServletResponse) { | |
72 | + HttpServletRequest httpRequest = (HttpServletRequest) request; | |
73 | + String remoteUser = getRemoteUser(httpRequest); | |
74 | + if (remoteUser != null) { | |
75 | + chain.doFilter(request, response); | |
76 | + } else { | |
77 | + // error | |
78 | + String erroCode = "000008"; | |
79 | + ErrorHandlingUtil.printLog(erroCode, null, systemLocale); | |
80 | + ErrorHandlingUtil.forwardErrorPage( | |
81 | + (HttpServletRequest) request, | |
82 | + (HttpServletResponse) response, erroCode, null, | |
83 | + errorPage); | |
84 | + } | |
85 | + } else { | |
86 | + //TODO redirect? | |
87 | + response.getWriter().write("Not supported."); | |
88 | + } | |
89 | + } | |
90 | + | |
91 | + public abstract String getRemoteUser(HttpServletRequest request); | |
92 | +} | |
\ No newline at end of file |
@@ -57,4 +57,6 @@ | ||
57 | 57 | |
58 | 58 | public static final String DEFAULT_ERROR_JSP = "/error.jsp"; |
59 | 59 | |
60 | + public static final String CURRENT_REMOTE_USER_KEY = "currentUserKey"; | |
61 | + | |
60 | 62 | } |