Использование 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.