in phoenix-queryserver/src/main/java/org/apache/phoenix/queryserver/server/QueryServer.java [551:574]
public String extract(HttpServletRequest request) throws RemoteUserExtractionException {
if (request.getParameter(userExtractParam) != null) {
String extractedUser = paramRemoteUserExtractor.extract(request);
UserGroupInformation ugi =
UserGroupInformation
.createRemoteUser(stripHostNameFromPrincipal(request.getRemoteUser()));
UserGroupInformation proxyUser = UserGroupInformation.createProxyUser(extractedUser, ugi);
// Check if this user is allowed to be impersonated.
// Will throw AuthorizationException if the impersonation as this user is not allowed
try {
ProxyUsers.authorize(proxyUser, request.getRemoteAddr());
return extractedUser;
} catch (AuthorizationException e) {
throw new RemoteUserExtractionException(e.getMessage(), e);
}
} else {
if (LOG.isDebugEnabled()) {
LOG.debug("The parameter (" + userExtractParam + ") used to extract the remote user doesn't exist in the request.");
}
return requestRemoteUserExtractor.extract(request);
}
}