diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/service/webapp/ApiServer.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/service/webapp/ApiServer.java index 88aeefd8738..70fba9237b6 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/service/webapp/ApiServer.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/service/webapp/ApiServer.java @@ -933,10 +933,16 @@ private UserGroupInformation getProxyUser(HttpServletRequest request) UserGroupInformation proxyUser; UserGroupInformation ugi; String remoteUser = request.getRemoteUser(); + String doas = request.getParameter(PARAM_DOAS); try { if (UserGroupInformation.isSecurityEnabled()) { - proxyUser = UserGroupInformation.getLoginUser(); - ugi = UserGroupInformation.createProxyUser(remoteUser, proxyUser); + if(doas == null || doas.equals("")) { + proxyUser = UserGroupInformation.getLoginUser(); + ugi = UserGroupInformation.createProxyUser(remoteUser, proxyUser); + } else { + proxyUser = UserGroupInformation.createRemoteUser(remoteUser); + ugi = UserGroupInformation.createProxyUser(doas, proxyUser); + } } else { ugi = UserGroupInformation.createRemoteUser(remoteUser); } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/conf/RestApiConstants.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/conf/RestApiConstants.java index 45ad7e4adbb..ce9a4deb98e 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/conf/RestApiConstants.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/conf/RestApiConstants.java @@ -44,6 +44,7 @@ String PARAM_COMP_NAME = "componentName"; String PARAM_VERSION = "version"; String PARAM_CONTAINER_STATE = "containerState"; + String PARAM_DOAS = "doas"; String MEDIA_TYPE_JSON_UTF8 = MediaType.APPLICATION_JSON + ";charset=utf-8";