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(+)
----------------------------------------------------------------------