У меня есть веб-приложение на основе Java, которое принимает содержимое веб-формы, содержащее имя пользователя и пароль, и аутентифицируется с использованием кеберосов в домене под управлением Windows.
Адрес KDC, по-видимому, настроен для сопоставления различных IP-адресов при каждом поиске, и это можно подтвердить, используя команду ping из командной строки.
Звонок отвечает сразу для большинства запросов, но ответ медленный (5-10 секунд или даже больше) с перерывами. Я думаю, это может быть связано с тем, какой контроллер домена используется.
Я попытался включить регистрацию kerberos, но IP-адрес контроллера домена не отображается. Как я могу включить более подробное ведение журнала, чтобы попытаться определить изворотливые контроллеры домена, пожалуйста?
Исчерпывающий код извлекает из файловой системы kerb.conf и kerb_context.conf.
kerb.conf:
[libdefaults]
default_realm = EXAMPLE.COM
[realms]
CYMRU.NHS.UK = {
kdc = example.com:88
admin_server = example.com
kpasswd_server = example.com
}
kerb_context.conf:
primaryLoginContext {
com.sun.security.auth.module.Krb5LoginModule required
useTicketCache=false
refreshKrb5Config=true
debug=true;
};
Источник примера:
static NadexUser executePerformLogin(String username, String password) throws LoginException {
char[] passwd = password.toCharArray();
String kerbConf = ERXFileUtilities.pathForResourceNamed("nadex/kerb.conf", "RSCorp", null);
String kerbContextConf = ERXFileUtilities.pathURLForResourceNamed("nadex/kerb_context.conf", "RSCorp", null).toExternalForm();
System.setProperty("java.security.krb5.conf", kerbConf);
System.setProperty("java.security.auth.login.config", kerbContextConf);
try {
LoginContext lc = new LoginContext("primaryLoginContext", new UserNamePasswordCallbackHandler(username, password));
lc.login();
return new _NadexUser(lc.getSubject());
}
catch (javax.security.auth.login.LoginException le) {
throw new LoginException("Failed to login : " + le.getLocalizedMessage(), le);
}
}