HADOOP-10193. hadoop-auth's PseudoAuthenticationHandler can consume getInputStream. (gchanan via tucu)
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1555955 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
f8a9329f2b
commit
fb2406a635
|
@ -92,6 +92,11 @@
|
||||||
<artifactId>hadoop-minikdc</artifactId>
|
<artifactId>hadoop-minikdc</artifactId>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.httpcomponents</groupId>
|
||||||
|
<artifactId>httpclient</artifactId>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
|
|
@ -16,10 +16,15 @@ package org.apache.hadoop.security.authentication.server;
|
||||||
import org.apache.hadoop.security.authentication.client.AuthenticationException;
|
import org.apache.hadoop.security.authentication.client.AuthenticationException;
|
||||||
import org.apache.hadoop.security.authentication.client.PseudoAuthenticator;
|
import org.apache.hadoop.security.authentication.client.PseudoAuthenticator;
|
||||||
|
|
||||||
|
import org.apache.http.client.utils.URLEncodedUtils;
|
||||||
|
import org.apache.http.NameValuePair;
|
||||||
|
|
||||||
import javax.servlet.ServletException;
|
import javax.servlet.ServletException;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.nio.charset.Charset;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -48,6 +53,7 @@ public class PseudoAuthenticationHandler implements AuthenticationHandler {
|
||||||
*/
|
*/
|
||||||
public static final String ANONYMOUS_ALLOWED = TYPE + ".anonymous.allowed";
|
public static final String ANONYMOUS_ALLOWED = TYPE + ".anonymous.allowed";
|
||||||
|
|
||||||
|
private static final Charset UTF8_CHARSET = Charset.forName("UTF-8");
|
||||||
private boolean acceptAnonymous;
|
private boolean acceptAnonymous;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -114,6 +120,18 @@ public class PseudoAuthenticationHandler implements AuthenticationHandler {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String getUserName(HttpServletRequest request) {
|
||||||
|
List<NameValuePair> list = URLEncodedUtils.parse(request.getQueryString(), UTF8_CHARSET);
|
||||||
|
if (list != null) {
|
||||||
|
for (NameValuePair nv : list) {
|
||||||
|
if (PseudoAuthenticator.USER_NAME.equals(nv.getName())) {
|
||||||
|
return nv.getValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Authenticates an HTTP client request.
|
* Authenticates an HTTP client request.
|
||||||
* <p/>
|
* <p/>
|
||||||
|
@ -139,7 +157,7 @@ public class PseudoAuthenticationHandler implements AuthenticationHandler {
|
||||||
public AuthenticationToken authenticate(HttpServletRequest request, HttpServletResponse response)
|
public AuthenticationToken authenticate(HttpServletRequest request, HttpServletResponse response)
|
||||||
throws IOException, AuthenticationException {
|
throws IOException, AuthenticationException {
|
||||||
AuthenticationToken token;
|
AuthenticationToken token;
|
||||||
String userName = request.getParameter(PseudoAuthenticator.USER_NAME);
|
String userName = getUserName(request);
|
||||||
if (userName == null) {
|
if (userName == null) {
|
||||||
if (getAcceptAnonymous()) {
|
if (getAcceptAnonymous()) {
|
||||||
token = AuthenticationToken.ANONYMOUS;
|
token = AuthenticationToken.ANONYMOUS;
|
||||||
|
|
|
@ -94,7 +94,7 @@ public class TestPseudoAuthenticationHandler {
|
||||||
|
|
||||||
HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
|
HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
|
||||||
HttpServletResponse response = Mockito.mock(HttpServletResponse.class);
|
HttpServletResponse response = Mockito.mock(HttpServletResponse.class);
|
||||||
Mockito.when(request.getParameter(PseudoAuthenticator.USER_NAME)).thenReturn("user");
|
Mockito.when(request.getQueryString()).thenReturn(PseudoAuthenticator.USER_NAME + "=" + "user");
|
||||||
|
|
||||||
AuthenticationToken token = handler.authenticate(request, response);
|
AuthenticationToken token = handler.authenticate(request, response);
|
||||||
|
|
||||||
|
|
|
@ -580,6 +580,9 @@ Release 2.3.0 - UNRELEASED
|
||||||
HADOOP-10090. Jobtracker metrics not updated properly after execution
|
HADOOP-10090. Jobtracker metrics not updated properly after execution
|
||||||
of a mapreduce job. (ivanmi)
|
of a mapreduce job. (ivanmi)
|
||||||
|
|
||||||
|
HADOOP-10193. hadoop-auth's PseudoAuthenticationHandler can consume getInputStream.
|
||||||
|
(gchanan via tucu)
|
||||||
|
|
||||||
Release 2.2.0 - 2013-10-13
|
Release 2.2.0 - 2013-10-13
|
||||||
|
|
||||||
INCOMPATIBLE CHANGES
|
INCOMPATIBLE CHANGES
|
||||||
|
|
Loading…
Reference in New Issue