HADOOP-6814. Adds an API in UserGroupInformation to get the real authentication method of a passed UGI. Contributed by Jitendra Pandey.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@953863 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Devaraj Das 2010-06-11 20:32:26 +00:00
parent 754ea912b9
commit 755a5d8c9b
3 changed files with 21 additions and 0 deletions

View File

@ -50,6 +50,9 @@ Trunk (unreleased changes)
HADOOP-6526. Need mapping from long principal names to local OS HADOOP-6526. Need mapping from long principal names to local OS
user names. (boryas) user names. (boryas)
HADOOP-6814. Adds an API in UserGroupInformation to get the real
authentication method of a passed UGI. (Jitendra Pandey via ddas)
BUG FIXES BUG FIXES
HADOOP-6638. try to relogin in a case of failed RPC connection (expired tgt) HADOOP-6638. try to relogin in a case of failed RPC connection (expired tgt)
only in case the subject is loginUser or proxyUgi.realUser. (boryas) only in case the subject is loginUser or proxyUgi.realUser. (boryas)

View File

@ -736,6 +736,22 @@ public class UserGroupInformation {
return null; return null;
} }
/**
* Returns the authentication method of a ugi. If the authentication method is
* PROXY, returns the authentication method of the real user.
*
* @param ugi
* @return AuthenticationMethod
*/
public static AuthenticationMethod getRealAuthenticationMethod(
UserGroupInformation ugi) {
AuthenticationMethod authMethod = ugi.getAuthenticationMethod();
if (authMethod == AuthenticationMethod.PROXY) {
authMethod = ugi.getRealUser().getAuthenticationMethod();
}
return authMethod;
}
/** /**
* Compare the subjects to see if they are equal to each other. * Compare the subjects to see if they are equal to each other.
*/ */

View File

@ -277,6 +277,8 @@ public class TestUserGroupInformation {
Assert.assertEquals(am, ugi.getAuthenticationMethod()); Assert.assertEquals(am, ugi.getAuthenticationMethod());
Assert.assertEquals(null, proxyUgi.getAuthenticationMethod()); Assert.assertEquals(null, proxyUgi.getAuthenticationMethod());
proxyUgi.setAuthenticationMethod(AuthenticationMethod.PROXY); proxyUgi.setAuthenticationMethod(AuthenticationMethod.PROXY);
Assert.assertEquals(am, UserGroupInformation
.getRealAuthenticationMethod(proxyUgi));
proxyUgi.doAs(new PrivilegedExceptionAction<Object>() { proxyUgi.doAs(new PrivilegedExceptionAction<Object>() {
public Object run() throws IOException { public Object run() throws IOException {
Assert.assertEquals(AuthenticationMethod.PROXY, UserGroupInformation Assert.assertEquals(AuthenticationMethod.PROXY, UserGroupInformation