You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ha...@apache.org on 2015/05/21 14:41:58 UTC

[1/2] directory-kerby git commit: DIRKRB-228 Enhance kadmin to support get principal. Contributed by Yaning

Repository: directory-kerby
Updated Branches:
  refs/heads/master f0acc95c8 -> a2128ad79


DIRKRB-228 Enhance kadmin to support get principal. Contributed by Yaning


Project: http://git-wip-us.apache.org/repos/asf/directory-kerby/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerby/commit/6376258c
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/6376258c
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/6376258c

Branch: refs/heads/master
Commit: 6376258c504f8b145a191703656c736c5a2d5225
Parents: f0acc95
Author: Lin <li...@foxmail.com>
Authored: Thu May 21 20:26:07 2015 +0800
Committer: Lin <li...@foxmail.com>
Committed: Thu May 21 20:26:07 2015 +0800

----------------------------------------------------------------------
 .../kerby/kerberos/tool/kadmin/Kadmin.java      | 10 ++-
 .../kadmin/executor/GetPrincipalExcutor.java    | 75 ++++++++++++++++++++
 2 files changed, 79 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/6376258c/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/Kadmin.java
----------------------------------------------------------------------
diff --git a/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/Kadmin.java b/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/Kadmin.java
index 706d181..39e429d 100644
--- a/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/Kadmin.java
+++ b/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/Kadmin.java
@@ -21,12 +21,7 @@ package org.apache.kerby.kerberos.tool.kadmin;
 
 import org.apache.kerby.config.Conf;
 import org.apache.kerby.kerberos.kerb.server.KdcConfig;
-import org.apache.kerby.kerberos.tool.kadmin.executor.AddPrincipalExecutor;
-import org.apache.kerby.kerberos.tool.kadmin.executor.DeletePrincipalExecutor;
-import org.apache.kerby.kerberos.tool.kadmin.executor.KadminCommandExecutor;
-import org.apache.kerby.kerberos.tool.kadmin.executor.KeytabAddExecutor;
-import org.apache.kerby.kerberos.tool.kadmin.executor.ModifyPrincipalExecutor;
-import org.apache.kerby.kerberos.tool.kadmin.executor.RenamePrincipalExecutor;
+import org.apache.kerby.kerberos.tool.kadmin.executor.*;
 
 import java.io.File;
 import java.io.IOException;
@@ -97,6 +92,9 @@ public class Kadmin {
         } else if (command.startsWith("rename_principal") ||
                 command.startsWith("renprinc")) {
             executor = new RenamePrincipalExecutor(backendConfig);
+        } else if (command.startsWith("get_principal") || command.startsWith("getprinc") ||
+                command.startsWith("Get principal")) {
+            executor = new GetPrincipalExcutor(backendConfig);
         }
         if (executor == null) {
             System.out.println("Unknown request \"" + command + "\". Type \"?\" for a request list.");

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/6376258c/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/executor/GetPrincipalExcutor.java
----------------------------------------------------------------------
diff --git a/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/executor/GetPrincipalExcutor.java b/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/executor/GetPrincipalExcutor.java
new file mode 100644
index 0000000..06e8b53
--- /dev/null
+++ b/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/executor/GetPrincipalExcutor.java
@@ -0,0 +1,75 @@
+/**
+ *  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.kerby.kerberos.tool.kadmin.executor;
+
+import org.apache.kerby.config.Config;
+import org.apache.kerby.kerberos.kerb.identity.KrbIdentity;
+import org.apache.kerby.kerberos.kerb.identity.backend.IdentityBackend;
+import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
+import org.apache.kerby.kerberos.tool.kadmin.tool.KadminTool;
+
+import java.util.Map;
+
+public class GetPrincipalExcutor implements KadminCommandExecutor {
+    private static final String USAGE = "Usage: getprinc principalName\n" +
+            "such as, getprinc hello@TEST.COM";
+    private Config backendConfig;
+
+    public GetPrincipalExcutor(Config backendConfig) {
+        this.backendConfig = backendConfig;
+    }
+
+    @Override
+    public void execute(String input) {
+        String[] commands = input.split(" ");
+
+        if (commands.length != 2) {
+            System.err.println(USAGE);
+            return;
+        }
+
+        String princName = commands[commands.length - 1];
+        IdentityBackend backend = KadminTool.getBackend(backendConfig);
+        KrbIdentity identity = backend.getIdentity(princName);
+
+        if (identity == null) {
+            System.err.println(princName + "doesn't exist\n");
+            System.err.println(USAGE);
+            return;
+        }
+
+        Map<EncryptionType, EncryptionKey> key = identity.getKeys();
+
+        System.out.println(
+                "Principal: " + identity.getPrincipalName() + "\n" +
+                "Expiration data: " + identity.getExpireTime() + "\n" +
+                "Created time: " + identity.getCreatedTime() + "\n" +
+                "KDC flags: " + identity.getKdcFlags() + "\n" +
+                "Key version: " + identity.getKeyVersion() + "\n" +
+                "Number of keys: " + key.size()
+        );
+
+        for (EncryptionType keyType : key.keySet()) {
+            System.out.println("key: " + keyType);
+        }
+    }
+
+}


[2/2] directory-kerby git commit: DIRKRB-229 Enhance kadmin to support list principals. Contributed by Yaning

Posted by ha...@apache.org.
DIRKRB-229 Enhance kadmin to support list principals. Contributed by Yaning


Project: http://git-wip-us.apache.org/repos/asf/directory-kerby/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerby/commit/a2128ad7
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/a2128ad7
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/a2128ad7

Branch: refs/heads/master
Commit: a2128ad79f504aa1747705b966021ff2dcb7af42
Parents: 6376258
Author: Lin <li...@foxmail.com>
Authored: Thu May 21 20:40:59 2015 +0800
Committer: Lin <li...@foxmail.com>
Committed: Thu May 21 20:40:59 2015 +0800

----------------------------------------------------------------------
 .../identitybackend/JsonIdentityBackend.java    |  8 +++
 .../identitybackend/LdapIdentityBackend.java    |  6 +++
 .../ZookeeperIdentityBackend.java               |  6 +++
 .../kerberos/kerb/identity/IdentityService.java |  7 +++
 .../identity/backend/MemoryIdentityBackend.java |  6 +++
 .../kerby/kerberos/tool/kadmin/Kadmin.java      |  4 ++
 .../kadmin/executor/ListPrincipalExcutor.java   | 55 ++++++++++++++++++++
 7 files changed, 92 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/a2128ad7/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/JsonIdentityBackend.java
----------------------------------------------------------------------
diff --git a/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/JsonIdentityBackend.java b/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/JsonIdentityBackend.java
index 4c89db6..7934ae9 100644
--- a/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/JsonIdentityBackend.java
+++ b/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/JsonIdentityBackend.java
@@ -177,6 +177,14 @@ public class JsonIdentityBackend extends AbstractIdentityBackend {
         return principals;
     }
 
+    @Override
+    public List<String> getIdentities() {
+        List<String> principals = new ArrayList<>(ids.keySet());
+        Collections.sort(principals);
+
+        return principals;
+    }
+
     private void createGson() {
         GsonBuilder gsonBuilder = new GsonBuilder();
         gsonBuilder.registerTypeAdapter(EncryptionKey.class, new EncryptionKeyAdapter());

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/a2128ad7/kerby-backend/ldap-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/LdapIdentityBackend.java
----------------------------------------------------------------------
diff --git a/kerby-backend/ldap-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/LdapIdentityBackend.java b/kerby-backend/ldap-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/LdapIdentityBackend.java
index e84c04a..ab9c398 100644
--- a/kerby-backend/ldap-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/LdapIdentityBackend.java
+++ b/kerby-backend/ldap-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/LdapIdentityBackend.java
@@ -80,4 +80,10 @@ public class LdapIdentityBackend extends AbstractIdentityBackend {
     public List<String> getIdentities(int start, int limit) {
         return null;
     }
+
+    @Override
+    public List<String> getIdentities() {
+        //TODO
+        return null;
+    }
 }

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/a2128ad7/kerby-backend/zookeeper-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/ZookeeperIdentityBackend.java
----------------------------------------------------------------------
diff --git a/kerby-backend/zookeeper-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/ZookeeperIdentityBackend.java b/kerby-backend/zookeeper-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/ZookeeperIdentityBackend.java
index 743c2b9..654689b 100644
--- a/kerby-backend/zookeeper-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/ZookeeperIdentityBackend.java
+++ b/kerby-backend/zookeeper-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/ZookeeperIdentityBackend.java
@@ -219,6 +219,12 @@ public class ZookeeperIdentityBackend extends AbstractIdentityBackend
         return newIdentities.subList(start, limit);
     }
 
+    @Override
+    public List<String> getIdentities() {
+        //TODO
+        return null;
+    }
+
     private void setIdentity(KrbIdentity identity) throws KeeperException {
         String principalName = identity.getPrincipalName();
         principalName = replaceSlash(principalName);

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/a2128ad7/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/IdentityService.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/IdentityService.java b/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/IdentityService.java
index 6083cf0..9086fdc 100644
--- a/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/IdentityService.java
+++ b/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/IdentityService.java
@@ -34,6 +34,13 @@ public interface IdentityService {
     List<String> getIdentities(int start, int limit);
 
     /**
+     * Get the identity principal names,
+     * Note it's ordered by principal name.
+     * @return principal names
+     */
+    List<String> getIdentities();
+
+    /**
      * Get the identity account specified by name.
      * @param principalName
      * @return identity

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/a2128ad7/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/MemoryIdentityBackend.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/MemoryIdentityBackend.java b/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/MemoryIdentityBackend.java
index 1ea780c..68742ee 100644
--- a/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/MemoryIdentityBackend.java
+++ b/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/MemoryIdentityBackend.java
@@ -58,4 +58,10 @@ public class MemoryIdentityBackend extends AbstractIdentityBackend {
     public List<String> getIdentities(int start, int limit) {
         return new ArrayList<>(getCache().keySet());
     }
+
+    @Override
+    public List<String> getIdentities() {
+        //TODO
+        return null;
+    }
 }

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/a2128ad7/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/Kadmin.java
----------------------------------------------------------------------
diff --git a/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/Kadmin.java b/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/Kadmin.java
index 39e429d..c6c3112 100644
--- a/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/Kadmin.java
+++ b/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/Kadmin.java
@@ -95,6 +95,10 @@ public class Kadmin {
         } else if (command.startsWith("get_principal") || command.startsWith("getprinc") ||
                 command.startsWith("Get principal")) {
             executor = new GetPrincipalExcutor(backendConfig);
+        } else if (command.startsWith("list_principals") ||
+                command.startsWith("listprincs") || command.startsWith("get_principals") ||
+                command.startsWith("getprincs") || command.startsWith("List principals")) {
+            executor = new ListPrincipalExcutor(backendConfig);
         }
         if (executor == null) {
             System.out.println("Unknown request \"" + command + "\". Type \"?\" for a request list.");

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/a2128ad7/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/executor/ListPrincipalExcutor.java
----------------------------------------------------------------------
diff --git a/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/executor/ListPrincipalExcutor.java b/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/executor/ListPrincipalExcutor.java
new file mode 100644
index 0000000..49f9f4f
--- /dev/null
+++ b/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/executor/ListPrincipalExcutor.java
@@ -0,0 +1,55 @@
+/**
+ *  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.kerby.kerberos.tool.kadmin.executor;
+
+import org.apache.kerby.config.Config;
+import org.apache.kerby.kerberos.kerb.identity.backend.IdentityBackend;
+import org.apache.kerby.kerberos.tool.kadmin.tool.KadminTool;
+
+import java.util.List;
+
+public class ListPrincipalExcutor implements KadminCommandExecutor {
+    private Config backenConfig;
+
+    public ListPrincipalExcutor(Config backenConfig) {
+        this.backenConfig = backenConfig;
+    }
+
+    @Override
+    public void execute(String input) {
+        String[] commands = input.split(" ");
+        List<String> principalNames = null;
+
+        if (commands.length == 1) {
+            principalNames = listPrincipal();
+        }
+        System.out.println("Principals are listed:");
+
+        for (String principalName : principalNames) {
+            System.out.println(principalName);
+        }
+    }
+
+    private List<String> listPrincipal() {
+        IdentityBackend backend = KadminTool.getBackend(backenConfig);
+        List<String> principalName = backend.getIdentities();
+        return principalName;
+    }
+}