Как изменить пароли Kerberos в Java - PullRequest
2 голосов
/ 07 сентября 2010

Я должен администрировать пользователей Kerberos напрямую в Java (веб-приложение J2EE).Как сделать команду, эквивалентную команде kpasswd (или kadmin) с / без дополнительной библиотеки?Я нашел несколько коммерческих API, но они очень дорогие ...

Спасибо за вашу помощь

Ответы [ 3 ]

4 голосов
/ 12 октября 2012

Протокол изменения пароля Kerberos был реализован в ApacheDS http://directory.apache.org/.

«Помимо LDAP он поддерживает Kerberos 5 и протокол изменения пароля.»

Это на Java, с открытым исходным кодом и бесплатно, как в пиве.

1 голос
/ 07 сентября 2010

Вы можете просто вызвать kpasswd из своего приложения?

String cmd = "kpasswd -principal foo -passwd bar";
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(cmd);
pr.waitFor();
BufferedReader r = new BufferedReader(new InputStreamReader(pr.getInputStream()));
String line = "";
while ((line=r.readLine()) != null) {
  // TODO process response
}
r.close();
0 голосов
/ 03 января 2016

Использование ApacheDS - Maven:

<dependency>
    <groupId>org.apache.directory.server</groupId>
    <artifactId>kerberos-client</artifactId>
    <version>2.0.0-M21</version>
</dependency>

Java:

KdcConfig config = KdcConfig.getDefaultConfig();
config.setHostName("ldap.server.cz");
config.setUseUdp(false);

Set<EncryptionType> enct = new HashSet<EncryptionType>();
enct.add(EncryptionType.AES256_CTS_HMAC_SHA1_96);
config.setEncryptionTypes(enct);

KdcConnection conn = new KdcConnection(config);
ChangePasswordResult res = conn.changePassword(userPrincipal, userPassword, "NewPassword");
if (res.getCode().compareTo(ChangePasswordResultCode.KRB5_KPASSWD_SUCCESS) == 0) {
    System.out.println("Password was changed!");
} else {
    System.out.println("Password change error - " + res.getCode().name());
}

Вы должны разрешить порт 464 (tcp или udp, зависит от того, какой протокол вы используете).

Проблема в том, что это возвращает мне KRB5_KPASSWD_MALFORMED все время :( Описание кодов ошибок - https://www.ietf.org/proceedings/50/I-D/cat-kerberos-set-passwd-04.txt.

...