Java源码示例:org.apache.directory.server.kerberos.shared.crypto.encryption.KerberosKeyFactory

示例1
/**
 * Creates  multiple principals in the KDC and adds them to a keytab file.
 *
 * @param keytabFile keytab file to add the created principal.s
 * @param principals principals to add to the KDC, do not include the domain.
 * @throws Exception thrown if the principals or the keytab file could not be
 * created.
 */
public void createPrincipal(File keytabFile, String ... principals)
        throws Exception {
  String generatedPassword = UUID.randomUUID().toString();
  Keytab keytab = new Keytab();
  List<KeytabEntry> entries = new ArrayList<KeytabEntry>();
  for (String principal : principals) {
    createPrincipal(principal, generatedPassword);
    principal = principal + "@" + getRealm();
    KerberosTime timestamp = new KerberosTime();
    for (Map.Entry<EncryptionType, EncryptionKey> entry : KerberosKeyFactory
            .getKerberosKeys(principal, generatedPassword).entrySet()) {
      EncryptionKey ekey = entry.getValue();
      byte keyVersion = (byte) ekey.getKeyVersion();
      entries.add(new KeytabEntry(principal, 1L, timestamp, keyVersion,
              ekey));
    }
  }
  keytab.setEntries(entries);
  keytab.write(keytabFile);
}
 
示例2
private void createPrincipal(final File keyTabFile, final String... principals) throws LdapException, IOException
{
    final Keytab keytab = new Keytab();
    final List<KeytabEntry> entries = new ArrayList<>();
    final String password = UUID.randomUUID().toString();
    for (final String principal : principals)
    {
        createPrincipal(principal, password);
        final String principalName = principal + "@" + REALM;
        final KerberosTime timestamp = new KerberosTime();
        final Map<EncryptionType, EncryptionKey> keys = KerberosKeyFactory.getKerberosKeys(principalName, password);
        keys.forEach((type, key) -> entries.add(new KeytabEntry(principalName,
                                                                1,
                                                                timestamp,
                                                                (byte) key.getKeyVersion(),
                                                                key)));
    }
    keytab.setEntries(entries);
    keytab.write(keyTabFile);
}
 
示例3
/**
 * Creates  multiple principals in the KDC and adds them to a keytab file.
 *
 * @param keytabFile keytab file to add the created principal.s
 * @param principals principals to add to the KDC, do not include the domain.
 * @throws Exception thrown if the principals or the keytab file could not be
 * created.
 */
public void createPrincipal(File keytabFile, String ... principals)
        throws Exception {
  String generatedPassword = UUID.randomUUID().toString();
  Keytab keytab = new Keytab();
  List<KeytabEntry> entries = new ArrayList<KeytabEntry>();
  for (String principal : principals) {
    createPrincipal(principal, generatedPassword);
    principal = principal + "@" + getRealm();
    KerberosTime timestamp = new KerberosTime();
    for (Map.Entry<EncryptionType, EncryptionKey> entry : KerberosKeyFactory
            .getKerberosKeys(principal, generatedPassword).entrySet()) {
      EncryptionKey ekey = entry.getValue();
      byte keyVersion = (byte) ekey.getKeyVersion();
      entries.add(new KeytabEntry(principal, 1L, timestamp, keyVersion,
              ekey));
    }
  }
  keytab.setEntries(entries);
  keytab.write(keytabFile);
}
 
示例4
public void createPrincipal(File keytabFile, String... principals) throws Exception {
   String generatedPassword = "notSecret!";
   Keytab keytab = new Keytab();
   List<KeytabEntry> entries = new ArrayList<>();
   for (String principal : principals) {
      createPrincipal(principal, generatedPassword);
      principal = principal + "@" + getRealm();
      KerberosTime timestamp = new KerberosTime();
      for (Map.Entry<EncryptionType, EncryptionKey> entry : KerberosKeyFactory.getKerberosKeys(principal, generatedPassword).entrySet()) {
         EncryptionKey ekey = entry.getValue();
         byte keyVersion = (byte) ekey.getKeyVersion();
         entries.add(new KeytabEntry(principal, 1L, timestamp, keyVersion, ekey));
      }
   }
   keytab.setEntries(entries);
   keytab.write(keytabFile);
}
 
示例5
/**
 * Creates a keytab file for given principal.
 *
 * @param principalName
 * @param passPhrase
 * @param keytabFile
 * @throws IOException
 */
public static void createKeytab(final String principalName, final String passPhrase, final File keytabFile)
        throws IOException {
    final KerberosTime timeStamp = new KerberosTime();
    final int principalType = 1; // KRB5_NT_PRINCIPAL

    final Keytab keytab = Keytab.getInstance();
    final List<KeytabEntry> entries = new ArrayList<KeytabEntry>();
    for (Map.Entry<EncryptionType, EncryptionKey> keyEntry : KerberosKeyFactory.getKerberosKeys(principalName, passPhrase)
            .entrySet()) {
        System.out.println("Adding keytab entry of type: " + keyEntry.getKey().getName());
        final EncryptionKey key = keyEntry.getValue();
        final byte keyVersion = (byte) key.getKeyVersion();
        entries.add(new KeytabEntry(principalName, principalType, timeStamp, keyVersion, key));
    }
    keytab.setEntries(entries);
    keytab.write(keytabFile);
}
 
示例6
/**
 * Returns comma-separated list of JDK-supported encryption type names for use in krb5.conf.
 *
 * @return
 */
private String getSupportedEncTypes() {
    final List<String> enctypesList = new ArrayList<String>();
    for (EncryptionType encType : KerberosKeyFactory.getKerberosKeys("[email protected]", "dummy").keySet()) {
        enctypesList.add(encType.getName());
    }
    return StringUtils.join(enctypesList, ',');
}