Ну из того, что я понимаю ваше заявление проблемы является:
- Использования Kinit для создания кербероса билета
- Использование Java Client для отправки билета, сгенерированный для аутентификации
Я также предполагая, вы пишете код для java-клиента:
Ну в этом случае вы должны использовать jaas.conf
Образец JAAS конф: -
com.sun.security.jgss.krb5.initiate {
com.sun.security.auth.module.Krb5LoginModule required
isInitiator=true
useTicketCache=true
doNotPrompt=true;
};
Set JAAS конф через системное свойство: -
-Djava.security.auth.login.config=jaasconffilepath
Это позволит вам подобрать то, что определено в кэше учетных данных по умолчанию (в вашем случае это заполняется Kinit)
После того, как вы сделаете это: -
LoginContext lc = new LoginContext();
lc.login()
После этого использования Subject.doAs повышение привилегий и получить работу: -
Subject.doAs(lc.getSubject(), new YourAction())
Здесь YourAction класс можно определить (который должен реализовать PrivilegedExceptionAction) и в методе выполнения делать все, что вы хотите.
P.S В случае, если вы не «кодируете» ваш java-клиент, вам необходимо проверить документацию jaas соответствующего модуля и посмотреть, поддерживается ли это. Тогда все, что вам нужно сделать, это использовать файл jaas.conf, и вам хорошо идти.
P.S Вы можете избежать kinit все вместе, поставив useTicketCache = false и doNotPrompt = false. Затем вы можете указать пароль и имя пользователя в своем клиенте, и он получит вам билет.
P.S Пожалуйста, убедитесь, что вы определите свойство системы для krb5.conf для любого из этой работы: -D java.security.krb5.conf = krb5conffilepath
Спасибо за ответ. Можете ли вы рассказать о том, как использовать PrivilegedExceptionAction? Я хочу запустить «ls» и вернуть результаты. –
Это удаленный вызов ls? Если да, то вам нужно обратиться к соответствующему API Java для кода команды connect/run для связи SSH в методе запуска PrivilegedExceptionAction. Вероятно, вы можете взять имя команды и args в качестве аргументов конструктора для YourAction и передать его в код подключения. –