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);
}
}