You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by dr...@apache.org on 2015/03/16 10:24:01 UTC

directory-kerberos git commit: Pass down kinit options to krb client call

Repository: directory-kerberos
Updated Branches:
  refs/heads/master 37895fa08 -> e98333ad7


Pass down kinit options to krb client call


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

Branch: refs/heads/master
Commit: e98333ad777d8096ee365f537faa00eac390190b
Parents: 37895fa
Author: Drankye <dr...@gmail.com>
Authored: Mon Mar 16 17:19:04 2015 +0800
Committer: Drankye <dr...@gmail.com>
Committed: Mon Mar 16 17:19:04 2015 +0800

----------------------------------------------------------------------
 .../apache/kerby/kerberos/tool/ToolUtil.java    | 20 ++++++++++++++++++++
 .../apache/kerby/kerberos/tool/kinit/Kinit.java |  9 ++++-----
 .../kerby/kerberos/tool/kinit/KinitOption.java  |  7 +++++++
 .../kerby/kerberos/kerb/client/KOption.java     |  2 ++
 .../kerby/kerberos/kerb/client/KrbOption.java   | 16 ++++++++++++++++
 .../kerby/kerberos/kerb/client/KrbOptions.java  |  6 ++++++
 6 files changed, 55 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/e98333ad/kdc-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/ToolUtil.java
----------------------------------------------------------------------
diff --git a/kdc-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/ToolUtil.java b/kdc-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/ToolUtil.java
index 6e81d9e..3fb9d68 100644
--- a/kdc-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/ToolUtil.java
+++ b/kdc-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/ToolUtil.java
@@ -21,6 +21,9 @@ package org.apache.kerby.kerberos.tool;
 
 import org.apache.kerby.kerberos.kerb.client.KOption;
 import org.apache.kerby.kerberos.kerb.client.KOptionType;
+import org.apache.kerby.kerberos.kerb.client.KrbOption;
+import org.apache.kerby.kerberos.kerb.client.KrbOptions;
+import org.apache.kerby.kerberos.tool.kinit.KinitOption;
 
 import java.io.File;
 
@@ -68,4 +71,21 @@ public class ToolUtil {
 
         return true;
     }
+
+    /**
+     * Convert tool (like kinit) options to KrbOptions.
+     * @param krbOptions
+     * @return krb options
+     */
+    public static KrbOptions convertOptions(KrbOptions krbOptions) {
+        KrbOptions results = new KrbOptions();
+
+        for (KOption toolOpt : krbOptions.getOptions()) {
+            KrbOption krbOpt = KrbOption.fromOptionName(toolOpt.getOptionName());
+            krbOpt.setValue(toolOpt.getValue());
+            results.add(krbOpt);
+        }
+
+        return results;
+    }
 }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/e98333ad/kdc-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/kinit/Kinit.java
----------------------------------------------------------------------
diff --git a/kdc-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/kinit/Kinit.java b/kdc-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/kinit/Kinit.java
index f7cf76d..8e3678f 100644
--- a/kdc-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/kinit/Kinit.java
+++ b/kdc-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/kinit/Kinit.java
@@ -20,9 +20,7 @@
 package org.apache.kerby.kerberos.tool.kinit;
 
 import org.apache.kerby.kerberos.kerb.KrbException;
-import org.apache.kerby.kerberos.kerb.client.KOptionType;
-import org.apache.kerby.kerberos.kerb.client.KrbClient;
-import org.apache.kerby.kerberos.kerb.client.KrbOptions;
+import org.apache.kerby.kerberos.kerb.client.*;
 import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
 import org.apache.kerby.kerberos.tool.ToolUtil;
 
@@ -96,14 +94,15 @@ public class Kinit {
         return password;
     }
 
-    public static int requestTicket(String principal, KrbOptions options) {
+    private static int requestTicket(String principal, KrbOptions kinitOptions) {
         KrbClient krbClient = new KrbClient();
         krbClient.init();
 
         String password = getPassword(principal);
 
         try {
-            TgtTicket tgt = krbClient.requestTgtTicket(principal, password, null);
+            TgtTicket tgt = krbClient.requestTgtTicket(principal, password,
+                    ToolUtil.convertOptions(kinitOptions));
             // TODO: write tgt into credentials cache.
             return 0;
         } catch (KrbException e) {

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/e98333ad/kdc-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/kinit/KinitOption.java
----------------------------------------------------------------------
diff --git a/kdc-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/kinit/KinitOption.java b/kdc-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/kinit/KinitOption.java
index eb5e23f..cade8a8 100644
--- a/kdc-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/kinit/KinitOption.java
+++ b/kdc-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/kinit/KinitOption.java
@@ -71,10 +71,17 @@ public enum KinitOption implements KOption {
         this.type = type;
     }
 
+    @Override
+    public String getOptionName() {
+        return name();
+    }
+
+    @Override
     public void setType(KOptionType type) {
         this.type = type;
     }
 
+    @Override
     public KOptionType getType() {
         return this.type;
     }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/e98333ad/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KOption.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KOption.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KOption.java
index f5253f1..6a85ad6 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KOption.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KOption.java
@@ -25,6 +25,8 @@ public interface KOption {
 
     public KOptionType getType();
 
+    public String getOptionName();
+
     public void setName(String name);
 
     public String getName();

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/e98333ad/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbOption.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbOption.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbOption.java
index a5a3a18..3e6740b 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbOption.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbOption.java
@@ -82,6 +82,11 @@ public enum KrbOption implements KOption {
         this.type = type;
     }
 
+    @Override
+    public String getOptionName() {
+        return name();
+    }
+
     public void setType(KOptionType type) {
         this.type = type;
     }
@@ -133,4 +138,15 @@ public enum KrbOption implements KOption {
         }
         return NONE;
     }
+
+    public static KrbOption fromOptionName(String optionName) {
+        if (optionName != null) {
+            for (KrbOption ko : values()) {
+                if (ko.getOptionName().equals(optionName)) {
+                    return (KrbOption) ko;
+                }
+            }
+        }
+        return NONE;
+    }
 }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/e98333ad/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbOptions.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbOptions.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbOptions.java
index 2ea4eb2..1670673 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbOptions.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbOptions.java
@@ -19,7 +19,9 @@
  */
 package org.apache.kerby.kerberos.kerb.client;
 
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 public class KrbOptions {
@@ -44,6 +46,10 @@ public class KrbOptions {
         return options.containsKey(option);
     }
 
+    public List<KOption> getOptions() {
+        return new ArrayList<>(options.keySet());
+    }
+
     public KOption getOption(KOption option) {
         if (! options.containsKey(option)) {
             return null;