• R/O
  • SSH
  • HTTPS

sso-proxy: Commit


Commit MetaInfo

Revision10 (tree)
Zeit2008-07-11 22:54:29
Autorshinsuke

Log Message

supported single cookie header. fixed error handling.

Ändern Zusammenfassung

Diff

--- sso-proxy/trunk/src/main/java/jp/sf/ssoproxy/access/impl/AccessManagerImpl.java (revision 9)
+++ sso-proxy/trunk/src/main/java/jp/sf/ssoproxy/access/impl/AccessManagerImpl.java (revision 10)
@@ -32,6 +32,7 @@
3232 import org.apache.commons.httpclient.HttpMethod;
3333 import org.apache.commons.httpclient.HttpState;
3434 import org.apache.commons.httpclient.cookie.CookiePolicy;
35+import org.apache.commons.httpclient.params.HttpMethodParams;
3536 import org.apache.commons.io.FileUtils;
3637 import org.apache.commons.io.IOUtils;
3738 import org.apache.commons.io.output.DeferredFileOutputStream;
@@ -66,13 +67,19 @@
6667
6768 private int downloadThreshold = 1 * 1024 * 1024; // 1m
6869
69- private HttpClient getHttpClient() {
70+ private HttpClient getHttpClient(HostConfig hostConfig) {
7071 // TODO multi-thread
7172 HttpClient httpclient = new HttpClient();
73+ // Connection Timeout
7274 httpclient.getHttpConnectionManager().getParams().setConnectionTimeout(
73- 30000);
74- httpclient.getParams().setCookiePolicy(
75- CookiePolicy.BROWSER_COMPATIBILITY);
75+ hostConfig.getConnectionTimeout());
76+ // Cookie Policy
77+ httpclient.getParams().setCookiePolicy(hostConfig.getCookiePolicy());
78+ // Single Cookie Header
79+ if (hostConfig.isSingleCookieHeader()) {
80+ httpclient.getParams().setBooleanParameter(
81+ HttpMethodParams.SINGLE_COOKIE_HEADER, true);
82+ }
7683 // httpclient.getParams().setVersion(HttpVersion.HTTP_1_0); // HTTP 1.1 returns a content encoded by gzip.
7784 // TODO proxy
7885 return httpclient;
@@ -232,7 +239,7 @@
232239 HostConfig hostConfig, String url, String encoding)
233240 throws AccessException {
234241
235- HttpClient httpclient = getHttpClient();
242+ HttpClient httpclient = getHttpClient(hostConfig);
236243
237244 String cookieMapName = SSOProxyConstraints.STORED_COOKIE_LIST
238245 + hostConfig.getName();
@@ -282,7 +289,7 @@
282289 HostConfig hostConfig, AuthConfig authConfig)
283290 throws AccessException {
284291
285- HttpClient httpclient = getHttpClient();
292+ HttpClient httpclient = getHttpClient(hostConfig);
286293
287294 String cookieListName = SSOProxyConstraints.STORED_COOKIE_LIST
288295 + hostConfig.getName();
@@ -328,7 +335,7 @@
328335 HostConfig hostConfig, AuthConfig authConfig)
329336 throws AccessException {
330337
331- HttpClient httpclient = getHttpClient();
338+ HttpClient httpclient = getHttpClient(hostConfig);
332339
333340 String cookieMapName = SSOProxyConstraints.STORED_COOKIE_LIST
334341 + hostConfig.getName();
@@ -422,16 +429,20 @@
422429 props.put(SSOProxyConstraints.PROXY_CONFIG_PARAM, proxyConfig);
423430 // props.put(SSOProxyConstraints.REQUEST_PARAM, request);
424431 // props.put(SSOProxyConstraints.RESPONSE_PARAM, response);
432+
433+ InputStream inputStream = (InputStream) resultMap
434+ .get(SSOProxyConstraints.RESPONSE_BODY_INPUT_STREAM_PARAM);
425435 try {
426- forwarder.forward(props, (InputStream) resultMap
427- .get(SSOProxyConstraints.RESPONSE_BODY_INPUT_STREAM_PARAM),
428- response.getOutputStream());
436+ if (inputStream != null) {
437+ forwarder.forward(props, inputStream, response
438+ .getOutputStream());
439+ }
429440 } catch (Exception e) {
430441 // } catch (SSOProxyException e) {
431442 // } catch (IOException e) {
432443 // error
433444 throw new AccessException("000019", new Object[] { forwarderName,
434- hostConfigName });
445+ hostConfigName }, e);
435446 }
436447
437448 }
--- sso-proxy/trunk/src/main/java/jp/sf/ssoproxy/servlet/ProxyServlet.java (revision 9)
+++ sso-proxy/trunk/src/main/java/jp/sf/ssoproxy/servlet/ProxyServlet.java (revision 10)
@@ -184,6 +184,7 @@
184184 } catch (Exception e) {
185185 // error
186186 ErrorHandlingUtil.printLog(e, systemLocale);
187+ //TODO error
187188 ErrorHandlingUtil.forwardErrorPage(request, response, e, errorPage);
188189 return;
189190 } finally {
--- sso-proxy/trunk/src/main/java/jp/sf/ssoproxy/config/impl/HostConfigImpl.java (revision 9)
+++ sso-proxy/trunk/src/main/java/jp/sf/ssoproxy/config/impl/HostConfigImpl.java (revision 10)
@@ -3,6 +3,8 @@
33 import java.util.HashMap;
44 import java.util.Map;
55
6+import org.apache.commons.httpclient.cookie.CookiePolicy;
7+
68 import jp.sf.ssoproxy.config.AuthConfig;
79 import jp.sf.ssoproxy.config.ConfigException;
810 import jp.sf.ssoproxy.config.HostConfig;
@@ -36,11 +38,20 @@
3638
3739 private AuthConfig[] authConfigs;
3840
41+ private boolean singleCookieHeader;
42+
43+ private String cookiePolicy;
44+
45+ private int connectionTimeout;
46+
3947 public HostConfigImpl() {
4048 scheme = HTTP_SCHEME;
4149 encoding = UTF_8;
4250 accessManagerName = DEFAULT_ACCESS_MANAGER;
4351 forwarderMap = new HashMap<String, String>();
52+ cookiePolicy = CookiePolicy.BROWSER_COMPATIBILITY;
53+ singleCookieHeader = false;
54+ connectionTimeout = 30000;
4455 }
4556
4657 public AuthConfig getAuthConfig(String method, String url,
@@ -137,4 +148,28 @@
137148 this.authConfigs = authConfigs;
138149 }
139150
151+ public boolean isSingleCookieHeader() {
152+ return singleCookieHeader;
153+ }
154+
155+ public void setSingleCookieHeader(boolean singleCookieHeader) {
156+ this.singleCookieHeader = singleCookieHeader;
157+ }
158+
159+ public String getCookiePolicy() {
160+ return cookiePolicy;
161+ }
162+
163+ public void setCookiePolicy(String cookiePolicy) {
164+ this.cookiePolicy = cookiePolicy;
165+ }
166+
167+ public int getConnectionTimeout() {
168+ return connectionTimeout;
169+ }
170+
171+ public void setConnectionTimeout(int connectionTimeout) {
172+ this.connectionTimeout = connectionTimeout;
173+ }
174+
140175 }
--- sso-proxy/trunk/src/main/java/jp/sf/ssoproxy/config/impl/AbstractAuthConfig.java (revision 9)
+++ sso-proxy/trunk/src/main/java/jp/sf/ssoproxy/config/impl/AbstractAuthConfig.java (revision 10)
@@ -47,8 +47,22 @@
4747 */
4848 public boolean checkLoginPageUrl(String method, String url,
4949 Map<String, String[]> params) throws ConfigException {
50- //TODO method and params
51- if (url != null && url.equals(loginPageUrl)) {
50+ if (url != null && url.equals(loginPageUrl)
51+ && loginPageMethod.equals(method)) {
52+ if (loginPageDataList != null) {
53+ for (Map<String, String> map : loginPageDataList) {
54+ String name = map.get(DATA_NAME);
55+ String value = map.get(DATA_VALUE);
56+ String[] values = params.get(name);
57+ if (value == null || values == null) {
58+ return false;
59+ } else if (values.length == 0) {
60+ return false;
61+ } else if (!value.equals(values[0])) {
62+ return false;
63+ }
64+ }
65+ }
5266 return true;
5367 }
5468 return false;
--- sso-proxy/trunk/src/main/java/jp/sf/ssoproxy/config/HostConfig.java (revision 9)
+++ sso-proxy/trunk/src/main/java/jp/sf/ssoproxy/config/HostConfig.java (revision 10)
@@ -15,4 +15,10 @@
1515
1616 public abstract AuthConfig getAuthConfig(String method, String url,
1717 Map<String, String[]> params) throws ConfigException;
18+
19+ public abstract boolean isSingleCookieHeader();
20+
21+ public abstract String getCookiePolicy();
22+
23+ public abstract int getConnectionTimeout();
1824 }
\ No newline at end of file
Show on old repository browser