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/03/24 07:15:53 UTC

directory-kerby git commit: DIRKRB-187 Write tgt into credentials cache in kinit

Repository: directory-kerby
Updated Branches:
  refs/heads/master 653130a29 -> 103931a32


DIRKRB-187  Write tgt into credentials cache in kinit


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

Branch: refs/heads/master
Commit: 103931a32dccf5e2e6321b26b6923bdc39116e52
Parents: 653130a
Author: hazel <li...@foxmail.com>
Authored: Tue Mar 24 14:15:45 2015 +0800
Committer: hazel <li...@foxmail.com>
Committed: Tue Mar 24 14:15:45 2015 +0800

----------------------------------------------------------------------
 kerby-tool/client-tool/pom.xml                  |  5 +++
 .../apache/kerby/kerberos/tool/kinit/Kinit.java | 34 +++++++++++++-------
 2 files changed, 28 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/103931a3/kerby-tool/client-tool/pom.xml
----------------------------------------------------------------------
diff --git a/kerby-tool/client-tool/pom.xml b/kerby-tool/client-tool/pom.xml
index 5f17dff..375ddb1 100644
--- a/kerby-tool/client-tool/pom.xml
+++ b/kerby-tool/client-tool/pom.xml
@@ -55,6 +55,11 @@
       <artifactId>pki-provider</artifactId>
       <version>${project.version}</version>
     </dependency>
+    <dependency>
+      <groupId>org.apache.kerby</groupId>
+      <artifactId>kerb-util</artifactId>
+      <version>${project.version}</version>
+    </dependency>
 
   </dependencies>
   

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/103931a3/kerby-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/kinit/Kinit.java
----------------------------------------------------------------------
diff --git a/kerby-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/kinit/Kinit.java b/kerby-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/kinit/Kinit.java
index f3da909..991a6ef 100644
--- a/kerby-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/kinit/Kinit.java
+++ b/kerby-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/kinit/Kinit.java
@@ -20,13 +20,18 @@
 package org.apache.kerby.kerberos.tool.kinit;
 
 import org.apache.kerby.kerberos.kerb.KrbException;
+import org.apache.kerby.kerberos.kerb.ccache.Credential;
+import org.apache.kerby.kerberos.kerb.ccache.CredentialCache;
 import org.apache.kerby.kerberos.kerb.client.KOptionType;
 import org.apache.kerby.kerberos.kerb.client.KOptions;
 import org.apache.kerby.kerberos.kerb.client.KrbClient;
+import org.apache.kerby.kerberos.kerb.client.KrbOption;
 import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
 import org.apache.kerby.kerberos.tool.ToolUtil;
 
 import java.io.Console;
+import java.io.File;
+import java.io.IOException;
 import java.util.Arrays;
 import java.util.Scanner;
 
@@ -96,21 +101,29 @@ public class Kinit {
         return password;
     }
 
-    private static int requestTicket(String principal, KOptions kinitOptions) {
+    private static void requestTicket(String principal, KOptions kinitOptions) throws KrbException, IOException {
         KrbClient krbClient = new KrbClient();
         krbClient.init();
 
         String password = getPassword(principal);
 
-        try {
-            TgtTicket tgt = krbClient.requestTgtTicket(principal, password,
-                    ToolUtil.convertOptions(kinitOptions));
-            // TODO: write tgt into credentials cache.
-            return 0;
-        } catch (KrbException e) {
-            System.err.println("Error occurred:" + e.getMessage());
-            return -1;
+        TgtTicket tgt = krbClient.requestTgtTicket(principal, password,
+                ToolUtil.convertOptions(kinitOptions));
+
+        // write tgt into credentials cache.
+        Credential credential = new Credential(tgt);
+        CredentialCache cCache = new CredentialCache();
+        cCache.addCredential(credential);
+        cCache.setPrimaryPrincipal(tgt.getClientPrincipal());
+
+        String fileName;
+        if (kinitOptions.contains(KrbOption.KRB5_CACHE)) {
+            fileName = kinitOptions.getStringOption(KrbOption.KRB5_CACHE);
+        } else {
+            fileName = "krb5_" + principal + ".cc";
         }
+        File cCacheFile = new File("/tmp/", fileName);
+        cCache.store(cCacheFile);
     }
 
     public static void main(String[] args) throws Exception {
@@ -157,8 +170,7 @@ public class Kinit {
             printUsage("No principal is specified");
         }
 
-        int errNo = Kinit.requestTicket(principal, ktOptions);
-        System.exit(errNo);
+        Kinit.requestTicket(principal, ktOptions);
     }
 
 }