Author: daryn
Date: Fri Jul 27 16:53:38 2012
New Revision: 1366450
URL: http://svn.apache.org/viewvc?rev=1366450&view=rev
Log:
svn merge -c 1366440 FIXES: HADOOP-8613.
AbstractDelegationTokenIdentifier#getUser() should set token auth type. (daryn)
Modified:
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/CHANGES.txt
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/token/delegation/AbstractDelegationTokenIdentifier.java
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/token/delegation/TestDelegationToken.java
Modified:
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/CHANGES.txt
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/CHANGES.txt?rev=1366450&r1=1366449&r2=1366450&view=diff
==============================================================================
---
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/CHANGES.txt
(original)
+++
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/CHANGES.txt
Fri Jul 27 16:53:38 2012
@@ -673,6 +673,9 @@ Release 0.23.3 - UNRELEASED
HADOOP-8551. fs -mkdir creates parent directories without the -p option
(John George via bobby)
+ HADOOP-8613. AbstractDelegationTokenIdentifier#getUser() should set token
+ auth type. (daryn)
+
Release 0.23.2 - UNRELEASED
NEW FEATURES
Modified:
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/token/delegation/AbstractDelegationTokenIdentifier.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/token/delegation/AbstractDelegationTokenIdentifier.java?rev=1366450&r1=1366449&r2=1366450&view=diff
==============================================================================
---
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/token/delegation/AbstractDelegationTokenIdentifier.java
(original)
+++
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/token/delegation/AbstractDelegationTokenIdentifier.java
Fri Jul 27 16:53:38 2012
@@ -29,6 +29,7 @@ import org.apache.hadoop.io.Text;
import org.apache.hadoop.io.WritableUtils;
import org.apache.hadoop.security.HadoopKerberosName;
import org.apache.hadoop.security.UserGroupInformation;
+import org.apache.hadoop.security.UserGroupInformation.AuthenticationMethod;
import org.apache.hadoop.security.token.TokenIdentifier;
import com.google.common.annotations.VisibleForTesting;
@@ -88,14 +89,17 @@ extends TokenIdentifier {
if ( (owner == null) || ("".equals(owner.toString()))) {
return null;
}
+ final UserGroupInformation realUgi;
+ final UserGroupInformation ugi;
if ((realUser == null) || ("".equals(realUser.toString()))
|| realUser.equals(owner)) {
- return UserGroupInformation.createRemoteUser(owner.toString());
+ ugi = realUgi = UserGroupInformation.createRemoteUser(owner.toString());
} else {
- UserGroupInformation realUgi = UserGroupInformation
- .createRemoteUser(realUser.toString());
- return UserGroupInformation.createProxyUser(owner.toString(), realUgi);
+ realUgi = UserGroupInformation.createRemoteUser(realUser.toString());
+ ugi = UserGroupInformation.createProxyUser(owner.toString(), realUgi);
}
+ realUgi.setAuthenticationMethod(AuthenticationMethod.TOKEN);
+ return ugi;
}
public Text getOwner() {
Modified:
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/token/delegation/TestDelegationToken.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/token/delegation/TestDelegationToken.java?rev=1366450&r1=1366449&r2=1366450&view=diff
==============================================================================
---
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/token/delegation/TestDelegationToken.java
(original)
+++
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/token/delegation/TestDelegationToken.java
Fri Jul 27 16:53:38 2012
@@ -40,6 +40,8 @@ import org.apache.hadoop.io.DataOutputBu
import org.apache.hadoop.io.Text;
import org.apache.hadoop.io.Writable;
import org.apache.hadoop.security.AccessControlException;
+import org.apache.hadoop.security.UserGroupInformation;
+import org.apache.hadoop.security.UserGroupInformation.AuthenticationMethod;
import org.apache.hadoop.security.token.SecretManager;
import org.apache.hadoop.security.token.Token;
import org.apache.hadoop.security.token.SecretManager.InvalidToken;
@@ -172,6 +174,52 @@ public class TestDelegationToken {
}
@Test
+ public void testGetUserNullOwner() {
+ TestDelegationTokenIdentifier ident =
+ new TestDelegationTokenIdentifier(null, null, null);
+ UserGroupInformation ugi = ident.getUser();
+ assertNull(ugi);
+ }
+
+ @Test
+ public void testGetUserWithOwner() {
+ TestDelegationTokenIdentifier ident =
+ new TestDelegationTokenIdentifier(new Text("owner"), null, null);
+ UserGroupInformation ugi = ident.getUser();
+ assertNull(ugi.getRealUser());
+ assertEquals("owner", ugi.getUserName());
+ assertEquals(AuthenticationMethod.TOKEN, ugi.getAuthenticationMethod());
+ }
+
+ @Test
+ public void testGetUserWithOwnerEqualsReal() {
+ Text owner = new Text("owner");
+ TestDelegationTokenIdentifier ident =
+ new TestDelegationTokenIdentifier(owner, null, owner);
+ UserGroupInformation ugi = ident.getUser();
+ assertNull(ugi.getRealUser());
+ assertEquals("owner", ugi.getUserName());
+ assertEquals(AuthenticationMethod.TOKEN, ugi.getAuthenticationMethod());
+ }
+
+ @Test
+ public void testGetUserWithOwnerAndReal() {
+ Text owner = new Text("owner");
+ Text realUser = new Text("realUser");
+ TestDelegationTokenIdentifier ident =
+ new TestDelegationTokenIdentifier(owner, null, realUser);
+ UserGroupInformation ugi = ident.getUser();
+ assertNotNull(ugi.getRealUser());
+ assertNull(ugi.getRealUser().getRealUser());
+ assertEquals("owner", ugi.getUserName());
+ assertEquals("realUser", ugi.getRealUser().getUserName());
+ assertEquals(AuthenticationMethod.PROXY,
+ ugi.getAuthenticationMethod());
+ assertEquals(AuthenticationMethod.TOKEN,
+ ugi.getRealUser().getAuthenticationMethod());
+ }
+
+ @Test
public void testDelegationTokenSecretManager() throws Exception {
final TestDelegationTokenSecretManager dtSecretManager =
new TestDelegationTokenSecretManager(24*60*60*1000,