|
@@ -79,6 +79,7 @@ public class UserGroupInformation {
|
|
*/
|
|
*/
|
|
private static final float TICKET_RENEW_WINDOW = 0.80f;
|
|
private static final float TICKET_RENEW_WINDOW = 0.80f;
|
|
static final String HADOOP_USER_NAME = "HADOOP_USER_NAME";
|
|
static final String HADOOP_USER_NAME = "HADOOP_USER_NAME";
|
|
|
|
+ static final String HADOOP_PROXY_USER = "HADOOP_PROXY_USER";
|
|
|
|
|
|
/**
|
|
/**
|
|
* UgiMetrics maintains UGI activity statistics
|
|
* UgiMetrics maintains UGI activity statistics
|
|
@@ -630,10 +631,18 @@ public class UserGroupInformation {
|
|
newLoginContext(authenticationMethod.getLoginAppName(),
|
|
newLoginContext(authenticationMethod.getLoginAppName(),
|
|
subject, new HadoopConfiguration());
|
|
subject, new HadoopConfiguration());
|
|
login.login();
|
|
login.login();
|
|
- loginUser = new UserGroupInformation(subject);
|
|
|
|
- loginUser.setLogin(login);
|
|
|
|
- loginUser.setAuthenticationMethod(authenticationMethod);
|
|
|
|
- loginUser = new UserGroupInformation(login.getSubject());
|
|
|
|
|
|
+ UserGroupInformation realUser = new UserGroupInformation(subject);
|
|
|
|
+ realUser.setLogin(login);
|
|
|
|
+ realUser.setAuthenticationMethod(authenticationMethod);
|
|
|
|
+ realUser = new UserGroupInformation(login.getSubject());
|
|
|
|
+ // If the HADOOP_PROXY_USER environment variable or property
|
|
|
|
+ // is specified, create a proxy user as the logged in user.
|
|
|
|
+ String proxyUser = System.getenv(HADOOP_PROXY_USER);
|
|
|
|
+ if (proxyUser == null) {
|
|
|
|
+ proxyUser = System.getProperty(HADOOP_PROXY_USER);
|
|
|
|
+ }
|
|
|
|
+ loginUser = proxyUser == null ? realUser : createProxyUser(proxyUser, realUser);
|
|
|
|
+
|
|
String fileLocation = System.getenv(HADOOP_TOKEN_FILE_LOCATION);
|
|
String fileLocation = System.getenv(HADOOP_TOKEN_FILE_LOCATION);
|
|
if (fileLocation != null) {
|
|
if (fileLocation != null) {
|
|
// load the token storage file and put all of the tokens into the
|
|
// load the token storage file and put all of the tokens into the
|