программная аутентификация для JMX в Websphere - PullRequest
2 голосов
/ 29 января 2010

Мы хотели бы делать вызовы JMX для других развернутых приложений в Websphere Application Server. Это прекрасно работает, если вы делаете это в веб-приложении, где пользователь выполняет вход с правильными учетными данными. Однако, если вы попытаетесь сделать вызовы JMX, скажем, из запущенной по таймеру части приложения, которая не имеет связи с каким-либо вошедшим в систему пользователем, вы получите javax.management.JMRuntimeException: ADMN0022E в котором говорится, что у вас нет прав на использование JMX.

Итак, мой вопрос: как я могу предоставить некоторые учетные данные для операции JMX? Есть ли способ «смоделировать» логин программным путем или какой-то способ предоставить субъект аутентификации таким образом, чтобы был выполнен вызов? И как я могу избежать ввода имени пользователя и пароля реального пользователя в код / ​​файл свойств?

В случае, если это имеет значение: мы используем Websphere 6.1 и работаем с Spring.

1 Ответ

2 голосов
/ 01 февраля 2010

Справочник по безопасности IBM WebSphere Application Server V6.1 Глава 9.6 просветила меня:

CallbackHandler loginHandler = new com.ibm.websphere.security.auth.callback.WSCallbackHandlerImpl("username","password");
LoginContext lc = new LoginContext("WSLogin", loginHandler);
lc.login();
Subject subject = lc.getSubject();
PrivilegedAction<Whateverresulttype> action = new PrivilegedAction<Whateverresulttype>() {
    public Health run() {
        return Health.valueOf(mbean.whatevercall());
    }
};
Whateverresulttype res = (Whateverresulttype) com.ibm.websphere.security.auth.WSSubject.doAs(subject, action);

Единственное, что мне нужно выяснить сейчас, - это как я могу избежать ввода учетных данных реального пользователя в код. 8 -)

...