예제 #1
0
  private Krb5InitCredential(
      Krb5NameElement name,
      byte[] asn1Encoding,
      KerberosPrincipal client,
      KerberosPrincipal server,
      byte[] sessionKey,
      int keyType,
      boolean[] flags,
      Date authTime,
      Date startTime,
      Date endTime,
      Date renewTill,
      InetAddress[] clientAddresses)
      throws GSSException {
    super(
        asn1Encoding,
        client,
        server,
        sessionKey,
        keyType,
        flags,
        authTime,
        startTime,
        endTime,
        renewTill,
        clientAddresses);

    this.name = name;

    try {
      // Cache this for later use by the sun.security.krb5 package.
      krb5Credentials =
          new Credentials(
              asn1Encoding,
              client.getName(),
              server.getName(),
              sessionKey,
              keyType,
              flags,
              authTime,
              startTime,
              endTime,
              renewTill,
              clientAddresses);
    } catch (KrbException e) {
      throw new GSSException(GSSException.NO_CRED, -1, e.getMessage());
    } catch (IOException e) {
      throw new GSSException(GSSException.NO_CRED, -1, e.getMessage());
    }
  }
 /**
  * Get the Kerberos TGT
  *
  * @return the user's TGT or null if none was found
  */
 private synchronized KerberosTicket getTGT() {
   Set<KerberosTicket> tickets = subject.getPrivateCredentials(KerberosTicket.class);
   for (KerberosTicket ticket : tickets) {
     KerberosPrincipal server = ticket.getServer();
     if (server.getName().equals("krbtgt/" + server.getRealm() + "@" + server.getRealm())) {
       if (LOG.isDebugEnabled()) {
         LOG.debug("Found tgt " + ticket);
       }
       return ticket;
     }
   }
   return null;
 }
 /** Return the Server name from Kerberos principal. */
 public static String getServerName(KerberosPrincipal principal) {
   if (principal == null) {
     return null;
   }
   String hostName = null;
   try {
     PrincipalName princName =
         new PrincipalName(principal.getName(), PrincipalName.KRB_NT_SRV_HST);
     String[] nameParts = princName.getNameStrings();
     if (nameParts.length >= 2) {
       hostName = nameParts[1];
     }
   } catch (Exception e) {
     // ignore
   }
   return hostName;
 }