You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@knox.apache.org by kr...@apache.org on 2018/12/07 15:36:42 UTC
knox git commit: KNOX-1364 - Cookie scoping path should contain the
topology name (Laszlo Nardai via Kevin Risden)
Repository: knox
Updated Branches:
refs/heads/master f6d7168c5 -> 9c7a806d1
KNOX-1364 - Cookie scoping path should contain the topology name (Laszlo Nardai via Kevin Risden)
Signed-off-by: Kevin Risden <kr...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/knox/repo
Commit: http://git-wip-us.apache.org/repos/asf/knox/commit/9c7a806d
Tree: http://git-wip-us.apache.org/repos/asf/knox/tree/9c7a806d
Diff: http://git-wip-us.apache.org/repos/asf/knox/diff/9c7a806d
Branch: refs/heads/master
Commit: 9c7a806d1adb54e0fa555fa9145b62f8bfab0fa1
Parents: f6d7168
Author: Kevin Risden <kr...@apache.org>
Authored: Fri Dec 7 09:52:45 2018 -0500
Committer: Kevin Risden <kr...@apache.org>
Committed: Fri Dec 7 10:00:02 2018 -0500
----------------------------------------------------------------------
.../rewrite/api/CookieScopeServletFilter.java | 4 ++-
.../impl/CookieScopeResponseWrapper.java | 18 ++++++++++--
.../impl/CookieScopeResponseWrapperTest.java | 29 ++++++++++++++++++--
.../ServiceDefinitionDeploymentContributor.java | 1 +
4 files changed, 46 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/knox/blob/9c7a806d/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/api/CookieScopeServletFilter.java
----------------------------------------------------------------------
diff --git a/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/api/CookieScopeServletFilter.java b/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/api/CookieScopeServletFilter.java
index 7408e8a..cccd8c2 100644
--- a/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/api/CookieScopeServletFilter.java
+++ b/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/api/CookieScopeServletFilter.java
@@ -31,17 +31,19 @@ import org.apache.knox.gateway.filter.rewrite.impl.CookieScopeResponseWrapper;
public class CookieScopeServletFilter extends AbstractGatewayFilter {
private String gatewayPath;
+ private String topologyName;
@Override
public void init( FilterConfig filterConfig ) throws ServletException {
super.init( filterConfig );
gatewayPath = filterConfig.getInitParameter("gateway.path");
+ topologyName = filterConfig.getInitParameter("topologyName");
}
@Override
protected void doFilter( HttpServletRequest request, HttpServletResponse response, FilterChain chain )
throws IOException, ServletException {
- chain.doFilter( request, new CookieScopeResponseWrapper(response, gatewayPath));
+ chain.doFilter(request, new CookieScopeResponseWrapper(response, gatewayPath, topologyName));
}
}
http://git-wip-us.apache.org/repos/asf/knox/blob/9c7a806d/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/CookieScopeResponseWrapper.java
----------------------------------------------------------------------
diff --git a/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/CookieScopeResponseWrapper.java b/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/CookieScopeResponseWrapper.java
index af88b7b..83114b5 100644
--- a/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/CookieScopeResponseWrapper.java
+++ b/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/CookieScopeResponseWrapper.java
@@ -25,16 +25,21 @@ import java.io.OutputStream;
import java.util.Locale;
public class CookieScopeResponseWrapper extends GatewayResponseWrapper {
-
private static final String SET_COOKIE = "Set-Cookie";
-
private static final String COOKIE_PATH = "Path=/";
private final String scopePath;
public CookieScopeResponseWrapper(HttpServletResponse response, String gatewayPath) {
super(response);
- this.scopePath = COOKIE_PATH + gatewayPath + "/";
+ this.scopePath = COOKIE_PATH + generateIfValidSegment(gatewayPath);
+ }
+
+ public CookieScopeResponseWrapper(HttpServletResponse response, String gatewayPath,
+ String topologyName) {
+ super(response);
+ this.scopePath = COOKIE_PATH + generateIfValidSegment(gatewayPath) +
+ generateIfValidSegment(topologyName);
}
@Override
@@ -57,4 +62,11 @@ public class CookieScopeResponseWrapper extends GatewayResponseWrapper {
public OutputStream getRawOutputStream() throws IOException {
return getResponse().getOutputStream();
}
+
+ private String generateIfValidSegment(String pathSegment){
+ if(pathSegment == null || pathSegment.isEmpty() || "/".equals(pathSegment)){
+ return "";
+ }
+ return pathSegment + "/";
+ }
}
http://git-wip-us.apache.org/repos/asf/knox/blob/9c7a806d/gateway-provider-rewrite/src/test/java/org/apache/knox/gateway/filter/rewrite/impl/CookieScopeResponseWrapperTest.java
----------------------------------------------------------------------
diff --git a/gateway-provider-rewrite/src/test/java/org/apache/knox/gateway/filter/rewrite/impl/CookieScopeResponseWrapperTest.java b/gateway-provider-rewrite/src/test/java/org/apache/knox/gateway/filter/rewrite/impl/CookieScopeResponseWrapperTest.java
index caa9b70..80384cc 100644
--- a/gateway-provider-rewrite/src/test/java/org/apache/knox/gateway/filter/rewrite/impl/CookieScopeResponseWrapperTest.java
+++ b/gateway-provider-rewrite/src/test/java/org/apache/knox/gateway/filter/rewrite/impl/CookieScopeResponseWrapperTest.java
@@ -19,14 +19,13 @@ package org.apache.knox.gateway.filter.rewrite.impl;
import org.easymock.Capture;
import org.easymock.EasyMock;
-import org.easymock.EasyMockSupport;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import javax.servlet.http.HttpServletResponse;
-public class CookieScopeResponseWrapperTest extends EasyMockSupport {
+public class CookieScopeResponseWrapperTest {
private HttpServletResponse mock;
@@ -88,4 +87,30 @@ public class CookieScopeResponseWrapperTest extends EasyMockSupport {
Assert.assertEquals("SESSIONID=jn0zexg59r1jo1n66hd7tg5anl; Path=/not-touched/; HttpOnly;", captureValue.getValue());
}
+ @Test
+ public void testWithPathAndTopologyName() {
+ CookieScopeResponseWrapper underTest = new CookieScopeResponseWrapper(mock, "some/path", "dp-proxy");
+ underTest.addHeader("Set-Cookie", "SESSIONID=jn0zexg59r1jo1n66hd7tg5anl; Path=/; HttpOnly;");
+
+ Assert.assertEquals("Set-Cookie", captureKey.getValue());
+ Assert.assertEquals("SESSIONID=jn0zexg59r1jo1n66hd7tg5anl; Path=/some/path/dp-proxy/; HttpOnly;", captureValue.getValue());
+ }
+
+ @Test
+ public void gatewayPathIsInvalid() {
+ CookieScopeResponseWrapper underTest = new CookieScopeResponseWrapper(mock, "/", "dp-proxy");
+ underTest.addHeader("Set-Cookie", "SESSIONID=jn0zexg59r1jo1n66hd7tg5anl; Path=/; HttpOnly;");
+
+ Assert.assertEquals("Set-Cookie", captureKey.getValue());
+ Assert.assertEquals("SESSIONID=jn0zexg59r1jo1n66hd7tg5anl; Path=/dp-proxy/; HttpOnly;", captureValue.getValue());
+ }
+
+ @Test
+ public void topologyNameIsInvalid() {
+ CookieScopeResponseWrapper underTest = new CookieScopeResponseWrapper(mock, "some/path", "");
+ underTest.addHeader("Set-Cookie", "SESSIONID=jn0zexg59r1jo1n66hd7tg5anl; Path=/; HttpOnly;");
+
+ Assert.assertEquals("Set-Cookie", captureKey.getValue());
+ Assert.assertEquals("SESSIONID=jn0zexg59r1jo1n66hd7tg5anl; Path=/some/path/; HttpOnly;", captureValue.getValue());
+ }
}
http://git-wip-us.apache.org/repos/asf/knox/blob/9c7a806d/gateway-server/src/main/java/org/apache/knox/gateway/deploy/impl/ServiceDefinitionDeploymentContributor.java
----------------------------------------------------------------------
diff --git a/gateway-server/src/main/java/org/apache/knox/gateway/deploy/impl/ServiceDefinitionDeploymentContributor.java b/gateway-server/src/main/java/org/apache/knox/gateway/deploy/impl/ServiceDefinitionDeploymentContributor.java
index 3d35e29..c4f3af2 100644
--- a/gateway-server/src/main/java/org/apache/knox/gateway/deploy/impl/ServiceDefinitionDeploymentContributor.java
+++ b/gateway-server/src/main/java/org/apache/knox/gateway/deploy/impl/ServiceDefinitionDeploymentContributor.java
@@ -132,6 +132,7 @@ public class ServiceDefinitionDeploymentContributor extends ServiceDeploymentCon
if (context.getGatewayConfig().isCookieScopingToPathEnabled()) {
FilterDescriptor filter = resource.addFilter().name(COOKIE_SCOPING_FILTER_NAME).role(COOKIE_SCOPING_FILTER_ROLE).impl(CookieScopeServletFilter.class);
filter.param().name(GatewayConfigImpl.HTTP_PATH).value(context.getGatewayConfig().getGatewayPath());
+ filter.param().name("topologyName").value(context.getTopology().getName());
}
List<Policy> policyBindings = binding.getPolicies();
if ( policyBindings == null ) {