HADOOP-10665. Make Hadoop Authentication Handler loads case in-sensitive (Contributed by Benoy Antony)

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1605049 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Vinayakumar B 2014-06-24 10:31:07 +00:00
parent 08986fdbed
commit 22b9a60964
3 changed files with 33 additions and 3 deletions

View File

@ -134,11 +134,15 @@ public void init(FilterConfig filterConfig) throws ServletException {
String authHandlerName = config.getProperty(AUTH_TYPE, null); String authHandlerName = config.getProperty(AUTH_TYPE, null);
String authHandlerClassName; String authHandlerClassName;
if (authHandlerName == null) { if (authHandlerName == null) {
throw new ServletException("Authentication type must be specified: simple|kerberos|<class>"); throw new ServletException("Authentication type must be specified: " +
PseudoAuthenticationHandler.TYPE + "|" +
KerberosAuthenticationHandler.TYPE + "|<class>");
} }
if (authHandlerName.equals("simple")) { if (authHandlerName.toLowerCase(Locale.ENGLISH).equals(
PseudoAuthenticationHandler.TYPE)) {
authHandlerClassName = PseudoAuthenticationHandler.class.getName(); authHandlerClassName = PseudoAuthenticationHandler.class.getName();
} else if (authHandlerName.equals("kerberos")) { } else if (authHandlerName.toLowerCase(Locale.ENGLISH).equals(
KerberosAuthenticationHandler.TYPE)) {
authHandlerClassName = KerberosAuthenticationHandler.class.getName(); authHandlerClassName = KerberosAuthenticationHandler.class.getName();
} else { } else {
authHandlerClassName = authHandlerName; authHandlerClassName = authHandlerName;

View File

@ -74,6 +74,8 @@ public void testInitEmpty() throws Exception {
Assert.fail(); Assert.fail();
} catch (ServletException ex) { } catch (ServletException ex) {
// Expected // Expected
Assert.assertEquals("Authentication type must be specified: simple|kerberos|<class>",
ex.getMessage());
} catch (Exception ex) { } catch (Exception ex) {
Assert.fail(); Assert.fail();
} finally { } finally {
@ -234,6 +236,27 @@ public void testInit() throws Exception {
} }
} }
@Test
public void testInitCaseSensitivity() throws Exception {
// minimal configuration & simple auth handler (Pseudo)
AuthenticationFilter filter = new AuthenticationFilter();
try {
FilterConfig config = Mockito.mock(FilterConfig.class);
Mockito.when(config.getInitParameter(AuthenticationFilter.AUTH_TYPE)).thenReturn("SimPle");
Mockito.when(config.getInitParameter(AuthenticationFilter.AUTH_TOKEN_VALIDITY)).thenReturn(
(new Long(TOKEN_VALIDITY_SEC)).toString());
Mockito.when(config.getInitParameterNames()).thenReturn(
new Vector<String>(Arrays.asList(AuthenticationFilter.AUTH_TYPE,
AuthenticationFilter.AUTH_TOKEN_VALIDITY)).elements());
filter.init(config);
Assert.assertEquals(PseudoAuthenticationHandler.class,
filter.getAuthenticationHandler().getClass());
} finally {
filter.destroy();
}
}
@Test @Test
public void testGetRequestURL() throws Exception { public void testGetRequestURL() throws Exception {
AuthenticationFilter filter = new AuthenticationFilter(); AuthenticationFilter filter = new AuthenticationFilter();

View File

@ -448,6 +448,9 @@ Release 2.5.0 - UNRELEASED
HADOOP-10659. Refactor AccessControlList to reuse utility functions HADOOP-10659. Refactor AccessControlList to reuse utility functions
and to improve performance. (Benoy Antony via Arpit Agarwal) and to improve performance. (Benoy Antony via Arpit Agarwal)
HADOOP-10665. Make Hadoop Authentication Handler loads case in-sensitive
(Benoy Antony via vinayakumarb)
OPTIMIZATIONS OPTIMIZATIONS
BUG FIXES BUG FIXES