Что я пытаюсь сделать:
Я пытаюсь запустить образец весеннего загрузочного приложения со встроенным 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, чтобы иметь возможность подключиться к моей настройке?
Заранее большое спасибо