Изменить расположение кэша билетов Kerberos для Java

У меня есть настройки kerberos для окон, защищенный hadoop-2.6.0 с kerberos,

При отправке задания или выполнении каких-либо пользовательских команд Hadoop ссылается на кеш билетов Kerberos из расположения по умолчанию c: \ users \ username \ krb5cc_username.

Я хочу изменить это местоположение во время выполнения. Можно ли изменить свойство java по умолчанию, чтобы ссылаться на местоположение кэша билетов где-то в моей системе.

обновленный

Изменить местоположение по умолчанию можно с помощью команды ниже

kinit -c cache_name username

См. Java Kinit

Но когда я делаю какие-либо операции с hadoop, он по умолчанию использует кеш-билет только для информации пользователя. Как изменить расположение по умолчанию в определенном месте кэша пользователя?

Помощь будет принята с благодарностью.

2 ответа

Решение

Я только что решил проблему, установив ниже переменную среды,

set KRB5CCNAME=ticketlocation

Установка вышеуказанной переменной заставляет Hadoop получать билет из указанного места.

Прежде всего, вы можете. Но вы должны спросить себя, почему?

Открыть PrintWriterПострой свой login.conf, установите свойство JAAS conf file из своего кода, и все готово.

Вот пример кода:

PrintWriter writer = new PrintWriter(new FileOutputSteam("..."));
writer.println("client {");
writer.println("com.sun.security.auth.module.Krb5LoginModule required doNotPrompt=true useTicketCache=true");
writer.print("ticketCache=\"");
writer.print(path);
writer.println("\";");
writer.println("};");

System.setProperty("java.security.auth.login.config", ...);

Это следует сделать и использовать JAAS сейчас, чтобы получить представление кэша в памяти.

Другие вопросы по тегам