HADOOP-12481. JWTRedirectAuthenticationHandler doesn't Retain Original Query String. Contributed by Larry McCay.
(cherry picked from commit a121fa1d39
)
This commit is contained in:
parent
adb015847d
commit
6774a1732a
|
@ -233,10 +233,15 @@ public class JWTRedirectAuthenticationHandler extends
|
||||||
}
|
}
|
||||||
String loginURL = authenticationProviderUrl + delimiter
|
String loginURL = authenticationProviderUrl + delimiter
|
||||||
+ ORIGINAL_URL_QUERY_PARAM
|
+ ORIGINAL_URL_QUERY_PARAM
|
||||||
+ request.getRequestURL().toString();
|
+ request.getRequestURL().toString() + getOriginalQueryString(request);
|
||||||
return loginURL;
|
return loginURL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String getOriginalQueryString(HttpServletRequest request) {
|
||||||
|
String originalQueryString = request.getQueryString();
|
||||||
|
return (originalQueryString == null) ? "" : "?" + originalQueryString;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method provides a single method for validating the JWT for use in
|
* This method provides a single method for validating the JWT for use in
|
||||||
* request processing. It provides for the override of specific aspects of
|
* request processing. It provides for the override of specific aspects of
|
||||||
|
|
|
@ -356,6 +356,40 @@ public class TestJWTRedirectAuthentictionHandler extends
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testOrigURLWithQueryString() throws Exception {
|
||||||
|
handler.setPublicKey(publicKey);
|
||||||
|
|
||||||
|
Properties props = getProperties();
|
||||||
|
handler.init(props);
|
||||||
|
|
||||||
|
HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
|
||||||
|
Mockito.when(request.getRequestURL()).thenReturn(
|
||||||
|
new StringBuffer(SERVICE_URL));
|
||||||
|
Mockito.when(request.getQueryString()).thenReturn("name=value");
|
||||||
|
|
||||||
|
String loginURL = ((TestJWTRedirectAuthenticationHandler)handler).testConstructLoginURL(request);
|
||||||
|
Assert.assertNotNull("loginURL should not be null.", loginURL);
|
||||||
|
Assert.assertEquals("https://localhost:8443/authserver?originalUrl=" + SERVICE_URL + "?name=value", loginURL);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testOrigURLNoQueryString() throws Exception {
|
||||||
|
handler.setPublicKey(publicKey);
|
||||||
|
|
||||||
|
Properties props = getProperties();
|
||||||
|
handler.init(props);
|
||||||
|
|
||||||
|
HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
|
||||||
|
Mockito.when(request.getRequestURL()).thenReturn(
|
||||||
|
new StringBuffer(SERVICE_URL));
|
||||||
|
Mockito.when(request.getQueryString()).thenReturn(null);
|
||||||
|
|
||||||
|
String loginURL = ((TestJWTRedirectAuthenticationHandler)handler).testConstructLoginURL(request);
|
||||||
|
Assert.assertNotNull("LoginURL should not be null.", loginURL);
|
||||||
|
Assert.assertEquals("https://localhost:8443/authserver?originalUrl=" + SERVICE_URL, loginURL);
|
||||||
|
}
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setup() throws Exception, NoSuchAlgorithmException {
|
public void setup() throws Exception, NoSuchAlgorithmException {
|
||||||
setupKerberosRequirements();
|
setupKerberosRequirements();
|
||||||
|
@ -367,7 +401,7 @@ public class TestJWTRedirectAuthentictionHandler extends
|
||||||
publicKey = (RSAPublicKey) kp.getPublic();
|
publicKey = (RSAPublicKey) kp.getPublic();
|
||||||
privateKey = (RSAPrivateKey) kp.getPrivate();
|
privateKey = (RSAPrivateKey) kp.getPrivate();
|
||||||
|
|
||||||
handler = new JWTRedirectAuthenticationHandler();
|
handler = new TestJWTRedirectAuthenticationHandler();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void setupKerberosRequirements() throws Exception {
|
protected void setupKerberosRequirements() throws Exception {
|
||||||
|
@ -415,4 +449,10 @@ public class TestJWTRedirectAuthentictionHandler extends
|
||||||
|
|
||||||
return signedJWT;
|
return signedJWT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class TestJWTRedirectAuthenticationHandler extends JWTRedirectAuthenticationHandler {
|
||||||
|
public String testConstructLoginURL(HttpServletRequest req) {
|
||||||
|
return constructLoginURL(req);
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -303,6 +303,9 @@ Release 2.8.0 - UNRELEASED
|
||||||
HADOOP-10775. Shell operations to fail with meaningful errors on windows if
|
HADOOP-10775. Shell operations to fail with meaningful errors on windows if
|
||||||
winutils.exe not found. (stevel)
|
winutils.exe not found. (stevel)
|
||||||
|
|
||||||
|
HADOOP-12481. JWTRedirectAuthenticationHandler doesn't Retain Original Query
|
||||||
|
String (Larry McCay via cnauroth)
|
||||||
|
|
||||||
OPTIMIZATIONS
|
OPTIMIZATIONS
|
||||||
|
|
||||||
HADOOP-11785. Reduce the number of listStatus operation in distcp
|
HADOOP-11785. Reduce the number of listStatus operation in distcp
|
||||||
|
|
Loading…
Reference in New Issue