SpringBoot 2 с приводом Spring Security - PullRequest
0 голосов
/ 13 ноября 2018

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

Чтобы добиться этого, я добавил в инициализацию следующееclass.

@SpringBootApplication(exclude = { SecurityAutoConfiguration.class })

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

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

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

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()
            ;
    }

}
0 голосов
/ 14 ноября 2018

Больше нет отдельного контекста для привода.

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

@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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...