Jolokia с базовой аутентификацией в приложении Spring Boot и hawt.io

Что я пытаюсь сделать:

Я пытаюсь запустить образец весеннего загрузочного приложения со встроенным Jolokia, настроить на нем базовую аутентификацию и подключиться к нему из hawt.io, я как бы пилотный проект.

Моя установка (все на локальном хосте, без брандмауэров):

  • Приложение Spring на порту 8080 (по умолчанию)
  • Hawtio на порту 5555

Я использую последнюю версию весенней загрузки, доступную для моего примера приложения с использованием jolokia и hawt.io (отказ от ответственности, я новичок в весенней загрузке и весенней безопасности)

Версия Spring Boot: 1.5.2 RELEASE Spring Security: 4.2.2 RELEASE Jolokia: 1.3.5

Тест 1: работает без защиты Spring (я установил management.security.enabled=false в application.properties) - все работает как положено, я могу подключиться к localhost:8080/jolokia без какого-либо пользователя/пароля как из мой браузер и из приложения hawt.io, которое я запускаю локально

Тест 2: закомментируйте строку management.security.enabled=false и создайте следующий файл конфигурации, чтобы подключить защиту Spring:

@Configuration
@EnableWebSecurity
public class SpringSecurityConfiguration extends WebSecurityConfigurerAdapter {

@Autowired
public void configureGlobalSecurity(AuthenticationManagerBuilder auth) throws Exception {
    auth.inMemoryAuthentication()
            .withUser("admin")
            .password("admin")
            .roles("ACTUATOR");
}

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
            .authorizeRequests()
            .antMatchers("/").permitAll()
            .antMatchers("/error").permitAll()
            .antMatchers("/jolokia/**").hasRole("ACTUATOR")
            .and().httpBasic();
 }
}

После этого шага я вижу, что при подключении к localhost:8080/jolokia из браузера я вижу всплывающее окно с базовой аутентификацией, я ввожу admin/admin и вижу, что Jolokia отвечает, поэтому я делаю вывод, что моя настройка безопасности spring в порядке.

Теперь пришло время запустить hawt.io:

java -jar hawtio-app-1.5.0.jar --port 5555

И теперь, когда я нажимаю «подключиться» в пользовательском интерфейсе hawt.io после ввода сведений о моем соединении localhost:8080/jolokia (у него нет текстовых полей пользователя/пароля), меня выбрасывает на экран входа в систему hawt.io. И когда я вхожу в admin/admin, я вижу сообщение пользовательского интерфейса «Не удалось подключиться, запрещено».

Я пытался увидеть запросы, которые hawt.io отправляет на мой локальный хост: 8080 (используя пакет burp), и я вижу, что перед тем, как увидеть экран входа в систему hawt.io, я вижу много ответов 401 (Unauthorized) при попытке запроса jolokia на 8080 (конечно делаю, т.к. перед входом в admin/admin - так что нет шансов узнать это заранее). После того, как я войду в экран входа в систему hawtio, введите admin/admin и нажмите «войти» — я вообще не вижу никаких запросов от hawt.io к 8080. Я вижу только один запрос от пользовательского интерфейса к серверу hawt.io, который отвечает 403. Поэтому я подозреваю, что это внутреннее окно аутентификации самого hawt.io, и оно не имеет ничего общего с jolokia.

Итак, я спрашиваю: чего мне не хватает в этой настройке, как мне настроить hawt.io, чтобы иметь возможность подключиться к моей настройке?

Заранее большое спасибо


person Mark Bramnik    schedule 04.04.2017    source источник


Ответы (2)


Добавление имени хоста jolokia к свойству hawtio.proxyWhitelist помогло мне.

person rrarr    schedule 03.07.2017
comment
Это действительно единственный способ? Это очень разочаровывает - для меня основная причина использования jolokia заключалась в том, что настроить JMX за сетью докеров очень сложно, так как вам нужно знать IP-адрес хоста. - person Amit Goldstein; 26.05.2020
comment
Теперь я понимаю, что вы можете установить proxyWhitelist на «*», поэтому вам не нужно заранее знать свой хост. - person Amit Goldstein; 26.05.2020

Попробуйте добавить endpoints.jolokia.sensitive=false в Spring Boot application.properties.

По умолчанию Spring Boot рассматривает Jolokia как «чувствительный» ресурс, что может вызвать ошибки авторизации при доступе к Jolokia.

person Tadayoshi Sato    schedule 04.04.2017
comment
Спасибо, но это не помогает, я вижу такое же поведение. Я подозреваю, что это что-то с hawt.io, а не с весенним приложением. Если я подключаюсь из браузера напрямую к localhost:8080/jolokia, я вижу всплывающее окно базовой аутентификации, и когда я вхожу в admin /admin там я могу подключиться. - person Mark Bramnik; 04.04.2017