You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@knox.apache.org by lm...@apache.org on 2015/04/15 14:55:17 UTC
knox git commit: KNOX-529 - second attempt to get all usecases -
missed wildcard plus explicit mappings before
Repository: knox
Updated Branches:
refs/heads/master cc27d465e -> 7a122bfb7
KNOX-529 - second attempt to get all usecases - missed wildcard plus explicit mappings before
Project: http://git-wip-us.apache.org/repos/asf/knox/repo
Commit: http://git-wip-us.apache.org/repos/asf/knox/commit/7a122bfb
Tree: http://git-wip-us.apache.org/repos/asf/knox/tree/7a122bfb
Diff: http://git-wip-us.apache.org/repos/asf/knox/diff/7a122bfb
Branch: refs/heads/master
Commit: 7a122bfb7dc324ab54c97aebb7b55ef1e8ce36b1
Parents: cc27d46
Author: Larry McCay <lm...@hortonworks.com>
Authored: Wed Apr 15 08:55:05 2015 -0400
Committer: Larry McCay <lm...@hortonworks.com>
Committed: Wed Apr 15 08:55:05 2015 -0400
----------------------------------------------------------------------
.../principal/SimplePrincipalMapper.java | 21 ++++++++++++++++++--
.../security/principal/PrincipalMapperTest.java | 20 +++++++++++++++++++
2 files changed, 39 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/knox/blob/7a122bfb/gateway-spi/src/main/java/org/apache/hadoop/gateway/security/principal/SimplePrincipalMapper.java
----------------------------------------------------------------------
diff --git a/gateway-spi/src/main/java/org/apache/hadoop/gateway/security/principal/SimplePrincipalMapper.java b/gateway-spi/src/main/java/org/apache/hadoop/gateway/security/principal/SimplePrincipalMapper.java
index e1623e7..802166b 100644
--- a/gateway-spi/src/main/java/org/apache/hadoop/gateway/security/principal/SimplePrincipalMapper.java
+++ b/gateway-spi/src/main/java/org/apache/hadoop/gateway/security/principal/SimplePrincipalMapper.java
@@ -17,6 +17,7 @@
*/
package org.apache.hadoop.gateway.security.principal;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.StringTokenizer;
@@ -94,14 +95,30 @@ public class SimplePrincipalMapper implements PrincipalMapper {
@Override
public String[] mapGroupPrincipal(String principalName) {
String[] groups = null;
+ String[] wildCardGroups = null;
if (groupMappings != null) {
groups = groupMappings.get(principalName);
- if (groups == null) {
- groups = groupMappings.get("*");
+ wildCardGroups = groupMappings.get("*");
+ if (groups != null && wildCardGroups != null) {
+ groups = concat(groups, wildCardGroups);
+ }
+ else if (wildCardGroups != null) {
+ return wildCardGroups;
}
}
return groups;
}
+
+ /**
+ * @param groups
+ * @param wildCardGroups
+ * @return
+ */
+ public static <T> T[] concat(T[] first, T[] second) {
+ T[] result = Arrays.copyOf(first, first.length + second.length);
+ System.arraycopy(second, 0, result, first.length, second.length);
+ return result;
+ }
}
http://git-wip-us.apache.org/repos/asf/knox/blob/7a122bfb/gateway-spi/src/test/java/org/apache/hadoop/gateway/security/principal/PrincipalMapperTest.java
----------------------------------------------------------------------
diff --git a/gateway-spi/src/test/java/org/apache/hadoop/gateway/security/principal/PrincipalMapperTest.java b/gateway-spi/src/test/java/org/apache/hadoop/gateway/security/principal/PrincipalMapperTest.java
index 890a46f..16e972e 100644
--- a/gateway-spi/src/test/java/org/apache/hadoop/gateway/security/principal/PrincipalMapperTest.java
+++ b/gateway-spi/src/test/java/org/apache/hadoop/gateway/security/principal/PrincipalMapperTest.java
@@ -56,6 +56,26 @@ public class PrincipalMapperTest {
}
@Test
+ public void testSimplePrincipalMappingWithWildcardAndExplicitGroups() {
+ String principalMapping = "";
+ String groupMapping = "*=users;lmccay=mrgroup";
+ try {
+ mapper.loadMappingTable(principalMapping, groupMapping);
+ }
+ catch (PrincipalMappingException pme) {
+ pme.printStackTrace();
+ fail();
+ }
+
+ assertTrue(mapper.mapUserPrincipal("lmccay").equals("lmccay"));
+ assertTrue(mapper.mapGroupPrincipal("hdfs")[0].equals("users"));
+ String group = mapper.mapGroupPrincipal("lmccay")[0];
+ assertTrue(group.equals("users") || group.equals("mrgroup"));
+ group = mapper.mapGroupPrincipal("lmccay")[1];
+ assertTrue(group.equals("users") || group.equals("mrgroup"));
+ }
+
+ @Test
public void testNonNullSimplePrincipalMappingWithGroups() {
String principalMapping = "lmccay,kminder=hdfs;newuser=mapred";
String groupMapping = "hdfs=group1;mapred=mrgroup,mrducks";