Использование JMX с Jaas для аутентификации jconsole
У меня есть следующий сценарий:
У меня есть приложение, которое использует JMX, чтобы выставить некоторые методы, сидя на сервере. В настоящее время пользователи могут подключаться к этому через командную строку, используя jconsole. В настоящее время нет ограничений доступа.
Пользователи будут входить в систему на компьютере и иметь права доступа, сохраненные в форме активного каталога.
Я ищу, чтобы добавить аутентификацию и авторизацию в процесс jmx, чтобы, когда пользователь вводит в командной строке:
jconsole <processName>
Он проверит их группу пользователей AD и определит, есть ли у них права на чтение или чтение и запись в управляемый ресурс.
У меня есть решение для получения групп AD, но не в том, как я передаю его процессу JMX. Я могу установить файл с жестко запрограммированными паролями для процесса jmx, но у меня нет возможности автоматически вызывать пользователя, чтобы определить его права доступа.
Возможно ли текущему процессу JMX выполнить обратный вызов, чтобы определить права доступа заданных пользователей, когда они пытаются подключиться к нему? Если нет, существуют ли существующие инструменты и структуры (например, JBoss), которые позволили бы мне сделать это?
1 ответ
Это решается с помощью пользовательского модуля входа в систему Jaas, а затем перезагружается и перезапускается процесс JMX с помощью следующего в командной строке:
-Dcom.sun.management.jmxremote.login.config=Sample
-Djava.security.auth.login.config=sample_jaas.config
где sample_jaas.config имеет такую настройку:
Sample {
sample.module.SampleLoginModule required;
};
и мой SampleLoginModule реализует интерфейс LoginModule, а в его методе login() есть обратный вызов в модуль логики авторизации.