Привод SpringBoot 2 с пружинной защитой

Как использовать Spring Security для защиты конечных точек привода, но не мешать другим URL-адресам приложений? Механизм безопасности в нашем приложении обрабатывается другой структурой, поэтому я хотел бы отключить Spring Security по умолчанию и включить его только для конечных точек /actuator/.

Для этого я добавил в класс инициализации следующее.

@SpringBootApplication(exclude = { SecurityAutoConfiguration.class })

При этом конфигурация по умолчанию Spring Security отключена. Какие изменения мне нужно внести после этого, чтобы настроить безопасность конечных точек привода?

Конечные точки исполнительных механизмов доступны через EndpointRequest.class, оттуда вы можете применить свою политику безопасности. И я предлагаю вам разрешить автоконфигурацию безопасности и просто настроить ее.

akuma8 13.11.2018 22:46
7
1
9 673
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Для актуатора больше нет отдельного контекста.

Предполагается, что до тех пор, пока конечные точки, не являющиеся исполнительными механизмами, не нуждаются в ограничениях безопасности, следующая конфигурация будет работать.

@Configuration
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().requestMatchers(EndpointRequest.toAnyEndpoint()).authenticated().anyRequest().permitAll()
                .and().formLogin();
    }
}

EndpointRequest обрабатывает сопоставление с любой конечной точкой Actuator, предоставляя форму входа в систему для тестирования. Обратите внимание, что даже /info и /health защищены. EndpointRequest имеет больше возможностей для детализации; кроме того, в Spring Boot 2 по умолчанию включены только info и health.

Или вы можете просто защитить пути за любым механизмом безопасности, который вы используете для других своих API.

Я разместил здесь пример приложения,

https://github.com/DarrenForsythe/secure-spring-actuator-only

Ответ принят как подходящий

Вы можете использовать приведенный ниже код и конфигурации

application.properties

spring.security.user.name=user
spring.security.user.password=password
spring.security.user.roles=ENDPOINT_ADMIN

Защита конечных точек исполнительного механизма

import org.springframework.boot.actuate.autoconfigure.security.servlet.EndpointRequest;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

/**
 * @author dpoddar
 *
 */
@Configuration
@EnableWebSecurity
public class ActuatorSecurity extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
        .csrf().disable()
        .authorizeRequests()
        .requestMatchers(EndpointRequest.to("health", "flyway","info")).permitAll()
        .requestMatchers(EndpointRequest.toAnyEndpoint()).hasRole("ENDPOINT_ADMIN")
        .and()
        .httpBasic()
            ;
    }

}

при использовании этой конфигурации, когда я пытаюсь получить доступ к "/actuator/hystrix.stream", мне предлагается бесконечно входить в систему. Я имею в виду, что если я введу правильный пароль пользователя: и нажму ENTER, мне будет предложено войти снова ... как я могу отладить базовую аутентификацию?

naXa 16.05.2019 21:00

Работай на меня. Создаю образец на github со всеми CI / CD от Travis-ci: github.com/NoraUi/noraui-datas-webservices

Stéphane GRILLON 30.07.2019 13:44

Другие вопросы по теме