Изменить расположение кэша билетов 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 сейчас, чтобы получить представление кэша в памяти.