in kerby-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/klist/KlistTool.java [87:135]
private static int printCredentialCacheInfo(KOptions klOptions) {
CredentialCache cc = new CredentialCache();
InputStream cis = null;
String fileName;
if (!klOptions.contains(KlistOption.CREDENTIALS_CACHE)) {
fileName = getCcacheName(klOptions);
} else {
fileName = klOptions.getStringOption(KlistOption.CREDENTIALS_CACHE);
}
try {
cis = Files.newInputStream(Paths.get(fileName));
cc.load(cis);
} catch (IOException e) {
LOG.error("Failed to open CredentialCache from file: " + fileName + ". " + e.toString());
} finally {
try {
if (cis != null) {
cis.close();
}
} catch (IOException e) {
LOG.warn("Fail to close input stream. " + e);
}
}
List<Credential> credentials = cc.getCredentials();
System.out.println("Ticket cache: " + fileName);
if (cc.getPrimaryPrincipal() != null) {
System.out.println("Default principal: " + cc.getPrimaryPrincipal().getName());
}
if (credentials.isEmpty()) {
System.out.println("No credential has been cached.");
} else {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US);
System.out.println("Valid starting\t\tExpires\t\t\tService principal");
for (Credential crd : credentials) {
System.out.println(df.format(crd.getStartTime().getTime()) + "\t"
+ df.format(crd.getEndTime().getTime()) + "\t"
+ crd.getServerName() + "\n"
+ "\t" + "renew until" + "\t" + df.format(crd.getRenewTill().getTime()));
}
}
return 0;
}