You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@knox.apache.org by mo...@apache.org on 2017/02/16 01:57:16 UTC
knox git commit: KNOX-879 - Fix url encoding issue for KnoxSSO
Repository: knox
Updated Branches:
refs/heads/master 6b6865ddc -> d187a877c
KNOX-879 - Fix url encoding issue for KnoxSSO
Project: http://git-wip-us.apache.org/repos/asf/knox/repo
Commit: http://git-wip-us.apache.org/repos/asf/knox/commit/d187a877
Tree: http://git-wip-us.apache.org/repos/asf/knox/tree/d187a877
Diff: http://git-wip-us.apache.org/repos/asf/knox/diff/d187a877
Branch: refs/heads/master
Commit: d187a877cd9fac4cf8c203c0bc2cfb1fcc774b73
Parents: 6b6865d
Author: Sandeep More <mo...@apache.org>
Authored: Wed Feb 15 20:57:08 2017 -0500
Committer: Sandeep More <mo...@apache.org>
Committed: Wed Feb 15 20:57:08 2017 -0500
----------------------------------------------------------------------
.../gateway/service/knoxsso/WebSSOutResource.java | 14 +++++++-------
.../java/org/apache/hadoop/gateway/util/Urls.java | 9 ++++++---
.../java/org/apache/hadoop/gateway/util/UrlsTest.java | 6 ++++++
3 files changed, 19 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/knox/blob/d187a877/gateway-service-knoxssout/src/main/java/org/apache/hadoop/gateway/service/knoxsso/WebSSOutResource.java
----------------------------------------------------------------------
diff --git a/gateway-service-knoxssout/src/main/java/org/apache/hadoop/gateway/service/knoxsso/WebSSOutResource.java b/gateway-service-knoxssout/src/main/java/org/apache/hadoop/gateway/service/knoxsso/WebSSOutResource.java
index e082eb1..cfc9af6 100644
--- a/gateway-service-knoxssout/src/main/java/org/apache/hadoop/gateway/service/knoxsso/WebSSOutResource.java
+++ b/gateway-service-knoxssout/src/main/java/org/apache/hadoop/gateway/service/knoxsso/WebSSOutResource.java
@@ -17,6 +17,9 @@
*/
package org.apache.hadoop.gateway.service.knoxsso;
+import org.apache.hadoop.gateway.i18n.messages.MessagesFactory;
+import org.apache.hadoop.gateway.util.Urls;
+
import javax.annotation.PostConstruct;
import javax.servlet.ServletContext;
import javax.servlet.http.Cookie;
@@ -28,22 +31,19 @@ import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.Response;
-import org.apache.hadoop.gateway.i18n.messages.MessagesFactory;
-import org.apache.hadoop.gateway.util.Urls;
+import java.net.MalformedURLException;
import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
import static javax.ws.rs.core.MediaType.APPLICATION_XML;
import static javax.ws.rs.core.Response.ok;
-import java.net.URISyntaxException;
-
@Path( WebSSOutResource.RESOURCE_PATH )
public class WebSSOutResource {
private static final String JWT_COOKIE_NAME = "hadoop-jwt";
static final String RESOURCE_PATH = "/api/v1/webssout";
static final String KNOXSSO_RESOURCE_PATH = "/api/v1/websso";
private static KnoxSSOutMessages log = MessagesFactory.get( KnoxSSOutMessages.class );
-
+
private String domainSuffix = null;
@Context
@@ -88,7 +88,7 @@ public class WebSSOutResource {
c.setPath("/");
try {
c.setDomain(Urls.getDomainName(request.getRequestURL().toString(), domainSuffix));
- } catch (URISyntaxException e) {
+ } catch (MalformedURLException e) {
log.problemWithCookieDomainUsingDefault();
// we are probably not going to be able to
// remove the cookie due to this error but it
@@ -96,7 +96,7 @@ public class WebSSOutResource {
rc = false;
}
response.addCookie(c);
-
+
return rc;
}
}
http://git-wip-us.apache.org/repos/asf/knox/blob/d187a877/gateway-util-common/src/main/java/org/apache/hadoop/gateway/util/Urls.java
----------------------------------------------------------------------
diff --git a/gateway-util-common/src/main/java/org/apache/hadoop/gateway/util/Urls.java b/gateway-util-common/src/main/java/org/apache/hadoop/gateway/util/Urls.java
index f10b0d6..cae9c11 100644
--- a/gateway-util-common/src/main/java/org/apache/hadoop/gateway/util/Urls.java
+++ b/gateway-util-common/src/main/java/org/apache/hadoop/gateway/util/Urls.java
@@ -18,8 +18,10 @@
package org.apache.hadoop.gateway.util;
import java.io.UnsupportedEncodingException;
+import java.net.MalformedURLException;
import java.net.URI;
import java.net.URISyntaxException;
+import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -81,9 +83,10 @@ public class Urls {
* @return the extracted domain name
* @throws URISyntaxException
*/
- public static String getDomainName(String url, String domainSuffix) throws URISyntaxException {
- URI uri = new URI(url);
- String domain = uri.getHost();
+ public static String getDomainName(String url, String domainSuffix) throws MalformedURLException {
+
+ final URL originalUrl = new URL(url);
+ final String domain = originalUrl.getHost();
// if the hostname ends with the domainSuffix the use the domainSuffix as
// the cookie domain
http://git-wip-us.apache.org/repos/asf/knox/blob/d187a877/gateway-util-common/src/test/java/org/apache/hadoop/gateway/util/UrlsTest.java
----------------------------------------------------------------------
diff --git a/gateway-util-common/src/test/java/org/apache/hadoop/gateway/util/UrlsTest.java b/gateway-util-common/src/test/java/org/apache/hadoop/gateway/util/UrlsTest.java
index 3b1e9cc..7c14ef8 100644
--- a/gateway-util-common/src/test/java/org/apache/hadoop/gateway/util/UrlsTest.java
+++ b/gateway-util-common/src/test/java/org/apache/hadoop/gateway/util/UrlsTest.java
@@ -55,6 +55,12 @@ public class UrlsTest {
// ip addresses can not be wildcarded - may be a completely different domain
Assert.assertEquals(Urls.getDomainName("http://127.0.0.1", null), null);
+
+ /* Make sure we handle encoded characters properly here */
+ Assert.assertTrue(Urls.getDomainName("https://www.local.com:8443/gateway/manager/admin-ui?limit=25&query=hive_table+where+name%3D%22table_1%22", null).equals(".local.com"));
+ /* Make sure we handle un-encoded characters safely */
+ Assert.assertTrue(Urls.getDomainName("https://www.local.com:8443/gateway/manager/admin-ui/?limit=25&query=\"table_1\"", null).equals(".local.com"));
+
}
@Test