Использование Kerberos с Webstart. Не могу получить TGT из кэша билетов
У меня проблемы с использованием Kerberos с Webstart. Я хочу получить Принципал текущего подписанного на Windows-пользователя, и API пытается получить tgt из кэша билетов.
AllowTgtSessionKey установлен в реестре на 1.
С обычным Java-приложением все в порядке, и я получаю билет и могу использовать принципал.
Но когда я развертываю свое приложение как Webstart, я не могу получить билет из кэша и получить исключение LoginException, когда я вызываю LoginContext # login.
Вот мой код:
Конфигурация:
private static Configuration getProgramaticLoginConfig()
{
HashMap<String, String> options = new HashMap<String, String>();
options.put("useTicketCache", "true");
options.put("doNotPrompt", "true");
options.put("debug","true");
AppConfigurationEntry krb5LoginModule = new AppConfigurationEntry("com.sun.security.auth.module.Krb5LoginModule", LoginModuleControlFlag.REQUIRED, options);
final AppConfigurationEntry[] aces = new AppConfigurationEntry[]{krb5LoginModule};
Configuration progConfig = new Configuration()
{
@Override
public AppConfigurationEntry[] getAppConfigurationEntry(String arg0)
{
return aces;
}
};
return progConfig;
}
И вот мой код:
LoginContext lc = null;
try {
// create a LoginContext
lc = new LoginContext("asdjfkasdjkfasdö",new DialogCallbackHandler());
} catch(Exception e) {
log.error("Initialisierung fehlgeschlagen",e);
}
try {
// login (effectively populating the Subject)
lc.login();
} catch(LoginException e) {
log.error("Login failed",e);
}
try {
//get the Subject that represents the signed-on user
Subject signedOnUserSubject = lc.getSubject();
...
Что я делаю неправильно? Все банки подписаны!
Спасибо за вашу помощь.
С уважением, Хольгер
1 ответ
Когда вы запускаете приложение с помощью веб-запуска, оно находится в контексте апплета с ограниченными привилегиями.
Вам нужно будет подписать свою банку, чтобы разрешить вход в систему jaas.
Пример здесь http://www.narendranaidu.com/2007/11/3-easy-steps-to-self-sign-applet-jar.html