Spring: настройка безопасности для конечных точек привода с помощью Spring Security

Можно ли настроить безопасность для конечных точек исполнительных механизмов приложения Spring с помощью Spring Security обычным способом?

Согласно https://github.com/spring-projects/spring-boot/issues/8646 Мне нужно сделать это в моей пользовательской конфигурации Spring Security.

Но предположим, что у меня есть как настраиваемое сопоставление запросов для /info в моем приложении (на порту 8080), так и конечная точка информации о приводе, включенная на порт 8081. Как я могу различить эти два в Spring Security?


person obecker    schedule 25.02.2018    source источник


Ответы (2)


Да, это возможно, но не особенно очевидно. В вашем расширении WebSecurityConfigurerAdapter вы можете добавить коллекцию конечных точек привода:

@Inject
private List<AbstractEndpointMvcAdapter<? extends Endpoint<?>>> actuatorEndpoints;

Затем при переопределении configureHttpSecurity(HttpSecurity http) вы можете использовать член getPath() каждой конечной точки исполнительного механизма для перехода к построителю .requestMatchers(forPortAndPath(managementPort, actuatorPath)), доступному в аргументе http.

person Andy Brown    schedule 27.02.2018
comment
Спасибо! На самом деле в моем случае я просто хотел игнорировать конечные точки управления из Spring Security, поэтому наличие @Value("${management.port:8081}") и .requestMatchers(request -> request.getServerPort() == managementPort) помогло - person obecker; 27.02.2018

Я только что узнал, что Spring Boot 2 явно решает эту проблему. См. https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#production-ready-endpoints-security

person obecker    schedule 05.03.2018
comment
@adrhc Не понимаю, что вы имеете в виду. Ссылка выше работает для меня. Это ссылка на текущий выпуск: docs.spring.io/spring-boot/docs/current/reference/htmlsingle/ - person obecker; 19.06.2019