You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by ff...@apache.org on 2015/03/13 08:58:13 UTC

[1/2] karaf git commit: [KARAF-3592]Add jaas commands to create group and list group (cherry picked from commit 4e3e53c5f5d55a9d9b90bab9636b9e9861ff1304)

Repository: karaf
Updated Branches:
  refs/heads/master f197ca94b -> 824d78497


[KARAF-3592]Add jaas commands to create group and list group
(cherry picked from commit 4e3e53c5f5d55a9d9b90bab9636b9e9861ff1304)

Conflicts:
	jaas/command/src/main/resources/OSGI-INF/blueprint/jaas-command.xml
	jaas/modules/src/main/java/org/apache/karaf/jaas/modules/jdbc/JDBCBackingEngine.java
	jaas/modules/src/main/java/org/apache/karaf/jaas/modules/properties/PropertiesBackingEngine.java
(cherry picked from commit 64e046eb13237250486c570c032ad70bed0dedee)

Conflicts:
	jaas/command/src/main/resources/OSGI-INF/blueprint/jaas-command.xml
	jaas/modules/src/main/java/org/apache/karaf/jaas/modules/jdbc/JDBCBackingEngine.java


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/9932ac46
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/9932ac46
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/9932ac46

Branch: refs/heads/master
Commit: 9932ac46c43aade82bd3ed9cbc0a95e6571ac9df
Parents: 8b36f73
Author: Freeman Fang <fr...@gmail.com>
Authored: Tue Mar 10 13:17:55 2015 +0800
Committer: Freeman Fang <fr...@gmail.com>
Committed: Fri Mar 13 15:56:45 2015 +0800

----------------------------------------------------------------------
 .../karaf/jaas/command/GroupCreateCommand.java  | 50 ++++++++++++++
 .../karaf/jaas/command/ListGroupsCommand.java   | 71 ++++++++++++++++++++
 .../karaf/jaas/modules/BackingEngine.java       | 13 ++++
 .../jaas/modules/jdbc/JDBCBackingEngine.java    | 12 ++++
 .../properties/PropertiesBackingEngine.java     | 28 +++++++-
 .../publickey/PublickeyBackingEngine.java       | 25 +++++++
 .../modules/syncope/SyncopeBackingEngine.java   |  9 +++
 7 files changed, 205 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/9932ac46/jaas/command/src/main/java/org/apache/karaf/jaas/command/GroupCreateCommand.java
----------------------------------------------------------------------
diff --git a/jaas/command/src/main/java/org/apache/karaf/jaas/command/GroupCreateCommand.java b/jaas/command/src/main/java/org/apache/karaf/jaas/command/GroupCreateCommand.java
new file mode 100644
index 0000000..e563d7a
--- /dev/null
+++ b/jaas/command/src/main/java/org/apache/karaf/jaas/command/GroupCreateCommand.java
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.karaf.jaas.command;
+
+import org.apache.karaf.jaas.modules.BackingEngine;
+import org.apache.karaf.shell.api.action.Argument;
+import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
+
+@Command(scope = "jaas", name = "group-create", description = "create a group in a realm")
+@Service
+public class GroupCreateCommand extends JaasCommandSupport {
+   
+    @Argument(index = 0, name = "group", description = "Group", required = true, multiValued = false)
+    private String group;
+
+    @Override
+    protected Object doExecute(BackingEngine engine) throws Exception {
+        engine.createGroup(group);
+        return null;
+    }
+
+        
+    public String getGroup() {
+        return group;
+    }
+
+    public void setGroup(String group) {
+        this.group = group;
+    }
+
+    @Override
+    public String toString() {
+        return "GroupCreateCommand {group='" + group + "'}";
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/karaf/blob/9932ac46/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListGroupsCommand.java
----------------------------------------------------------------------
diff --git a/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListGroupsCommand.java b/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListGroupsCommand.java
new file mode 100644
index 0000000..cd5c6ec
--- /dev/null
+++ b/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListGroupsCommand.java
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.karaf.jaas.command;
+
+import java.security.Principal;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+import javax.security.auth.login.AppConfigurationEntry;
+
+import org.apache.karaf.jaas.boot.principal.GroupPrincipal;
+import org.apache.karaf.jaas.boot.principal.UserPrincipal;
+import org.apache.karaf.jaas.config.JaasRealm;
+import org.apache.karaf.jaas.modules.BackingEngine;
+import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
+
+@Command(scope = "jaas", name = "group-list", description = "List groups in a realm")
+@Service
+public class ListGroupsCommand extends JaasCommandSupport {
+
+    private static final String GROUP_LIST_FORMAT = "%-10s  %-80s";
+
+        
+    @Override
+    public Object execute() throws Exception {
+        JaasRealm realm = (JaasRealm) session.get(JAAS_REALM);
+        AppConfigurationEntry entry = (AppConfigurationEntry) session.get(JAAS_ENTRY);
+
+        if (realm == null || entry == null) {
+            System.err.println("No JAAS Realm / Module has been selected.");
+            return null;
+        }
+
+        BackingEngine engine = getBackingEngine(entry);
+
+        if (engine == null) {
+            System.err.println("Can't get the list of users (no backing engine service registered)");
+            return null;
+        }
+
+        return doExecute(engine);
+    }
+
+    @Override
+    protected Object doExecute(BackingEngine engine) throws Exception {
+        System.out.println(String.format(GROUP_LIST_FORMAT, "Group", "Roles"));
+
+        for (GroupPrincipal group : engine.listGroups().keySet()) {
+            
+            System.out.println(String.format(GROUP_LIST_FORMAT, group.getName(), engine.listGroups().get(group)));
+        }
+        return null;
+    }
+}
+    

http://git-wip-us.apache.org/repos/asf/karaf/blob/9932ac46/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/BackingEngine.java
----------------------------------------------------------------------
diff --git a/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/BackingEngine.java b/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/BackingEngine.java
index 6f39801..01ab8b0 100644
--- a/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/BackingEngine.java
+++ b/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/BackingEngine.java
@@ -16,6 +16,7 @@ package org.apache.karaf.jaas.modules;
 
 import java.security.Principal;
 import java.util.List;
+import java.util.Map;
 
 import org.apache.karaf.jaas.boot.principal.GroupPrincipal;
 import org.apache.karaf.jaas.boot.principal.RolePrincipal;
@@ -52,6 +53,12 @@ public interface BackingEngine {
      * @return
      */
     List<GroupPrincipal> listGroups(UserPrincipal user);
+    
+    /**
+     * List groups in a certain realm
+     * @return the groups in a certain realm
+     */
+    Map<GroupPrincipal, String> listGroups();
 
     /**
      * Add a user to a group.
@@ -60,6 +67,12 @@ public interface BackingEngine {
      * @param group
      */
     void addGroup(String username, String group);
+    
+    /**
+     * Create a group
+     * @param group
+     */
+    void createGroup(String group);
 
     /**
      * Remove a user from a group.

http://git-wip-us.apache.org/repos/asf/karaf/blob/9932ac46/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/jdbc/JDBCBackingEngine.java
----------------------------------------------------------------------
diff --git a/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/jdbc/JDBCBackingEngine.java b/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/jdbc/JDBCBackingEngine.java
index 189abd9..81a1c06 100644
--- a/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/jdbc/JDBCBackingEngine.java
+++ b/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/jdbc/JDBCBackingEngine.java
@@ -34,6 +34,7 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
+import java.util.Map;
 
 public class JDBCBackingEngine implements BackingEngine {
 
@@ -323,4 +324,15 @@ public class JDBCBackingEngine implements BackingEngine {
         this.selectRolesQuery = selectRolesQuery;
     }
 
+    
+    @Override
+    public Map<GroupPrincipal, String> listGroups() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void createGroup(String group) {
+        throw new UnsupportedOperationException();
+        
+    }
 }

http://git-wip-us.apache.org/repos/asf/karaf/blob/9932ac46/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/properties/PropertiesBackingEngine.java
----------------------------------------------------------------------
diff --git a/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/properties/PropertiesBackingEngine.java b/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/properties/PropertiesBackingEngine.java
index bc568c1..2056871 100644
--- a/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/properties/PropertiesBackingEngine.java
+++ b/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/properties/PropertiesBackingEngine.java
@@ -15,6 +15,12 @@
  */
 package org.apache.karaf.jaas.modules.properties;
 
+import java.security.Principal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 import org.apache.felix.utils.properties.Properties;
 import org.apache.karaf.jaas.boot.principal.GroupPrincipal;
 import org.apache.karaf.jaas.boot.principal.RolePrincipal;
@@ -24,9 +30,6 @@ import org.apache.karaf.jaas.modules.encryption.EncryptionSupport;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.security.Principal;
-import java.util.ArrayList;
-import java.util.List;
 
 public class PropertiesBackingEngine implements BackingEngine {
 
@@ -269,4 +272,23 @@ public class PropertiesBackingEngine implements BackingEngine {
         deleteRole(GROUP_PREFIX + group, role);
     }
 
+    public Map<GroupPrincipal, String> listGroups() {
+        Map<GroupPrincipal, String> result = new HashMap<GroupPrincipal, String>();
+        for (String name : users.keySet()) {
+            if (name.startsWith(GROUP_PREFIX)) {
+                result.put(new GroupPrincipal(name.substring(GROUP_PREFIX.length())), users.get(name));
+            }
+        }
+        return result;
+    }
+
+    public void createGroup(String group) {
+        String groupName = GROUP_PREFIX + group;
+        if (users.get(groupName) == null) {
+            addUserInternal(groupName, "group");
+        } else {
+            throw new IllegalArgumentException("Group: " + group + " already exist");
+        }
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/karaf/blob/9932ac46/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/publickey/PublickeyBackingEngine.java
----------------------------------------------------------------------
diff --git a/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/publickey/PublickeyBackingEngine.java b/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/publickey/PublickeyBackingEngine.java
index 2693ab0..e9a9181 100644
--- a/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/publickey/PublickeyBackingEngine.java
+++ b/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/publickey/PublickeyBackingEngine.java
@@ -17,7 +17,9 @@ package org.apache.karaf.jaas.modules.publickey;
 
 import java.security.Principal;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import org.apache.felix.utils.properties.Properties;
 import org.apache.karaf.jaas.boot.principal.GroupPrincipal;
@@ -255,4 +257,27 @@ public class PublickeyBackingEngine implements BackingEngine {
         deleteRole(GROUP_PREFIX + group, role);
     }
 
+
+
+    public Map<GroupPrincipal, String> listGroups() {
+        Map<GroupPrincipal, String> result = new HashMap<GroupPrincipal, String>();
+        for (String name : users.keySet()) {
+            if (name.startsWith(GROUP_PREFIX)) {
+                result.put(new GroupPrincipal(name.substring(GROUP_PREFIX.length())), users.get(name));
+            }
+        }
+        return result;
+    }
+
+
+
+    public void createGroup(String group) {
+        String groupName = GROUP_PREFIX + group;
+        if (users.get(groupName) == null) {
+            addUserInternal(groupName, "group");
+        } else {
+            throw new IllegalArgumentException("Group: " + group + " already exist");
+        }
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/karaf/blob/9932ac46/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/syncope/SyncopeBackingEngine.java
----------------------------------------------------------------------
diff --git a/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/syncope/SyncopeBackingEngine.java b/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/syncope/SyncopeBackingEngine.java
index 306b311..d935230 100644
--- a/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/syncope/SyncopeBackingEngine.java
+++ b/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/syncope/SyncopeBackingEngine.java
@@ -36,6 +36,7 @@ import javax.naming.OperationNotSupportedException;
 import java.security.Principal;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 public class SyncopeBackingEngine implements BackingEngine {
 
@@ -173,4 +174,12 @@ public class SyncopeBackingEngine implements BackingEngine {
         throw new RuntimeException("Group management is not supported by Syncope backend");
     }
 
+    public Map<GroupPrincipal, String> listGroups() {
+        throw new RuntimeException("Group management is not supported by Syncope backend");
+    }
+
+    public void createGroup(String group) {
+            throw new RuntimeException("Group management is not supported by Syncope backend");
+    }
+
 }


[2/2] karaf git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/karaf

Posted by ff...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/karaf


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/824d7849
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/824d7849
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/824d7849

Branch: refs/heads/master
Commit: 824d784978158d2ffbd84d32d659ebf47797c43d
Parents: 9932ac4 f197ca9
Author: Freeman Fang <fr...@gmail.com>
Authored: Fri Mar 13 15:57:25 2015 +0800
Committer: Freeman Fang <fr...@gmail.com>
Committed: Fri Mar 13 15:57:25 2015 +0800

----------------------------------------------------------------------
 .../java/org/apache/karaf/features/internal/model/JaxbUtil.java   | 3 +++
 1 file changed, 3 insertions(+)
----------------------------------------------------------------------