带Spring安全的SpringBoot 2执行器

vom3gejh  于 2024-01-05  发布在  Spring
关注(0)|答案(3)|浏览(118)

如何使用Spring Security来保护执行器端点,但不干扰任何其他应用程序URL?我们应用程序中的安全机制由不同的框架处理,因此我希望默认禁用Spring Security,仅对/actuator/端点启用。
为了实现这一点,我在初始化类中添加了以下内容。

  1. @SpringBootApplication(exclude = { SecurityAutoConfiguration.class })

字符串
这样,Spring Security默认配置就被禁用了。在此之后,我需要做哪些更改来为执行器端点配置安全性?

mo49yndu

mo49yndu1#

您可以使用下面的代码和配置
application.properties

  1. spring.security.user.name=user
  2. spring.security.user.password=password
  3. spring.security.user.roles=ENDPOINT_ADMIN

字符串
固定致动器端点

  1. import org.springframework.boot.actuate.autoconfigure.security.servlet.EndpointRequest;
  2. import org.springframework.context.annotation.Configuration;
  3. import org.springframework.security.config.annotation.web.builders.HttpSecurity;
  4. import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
  5. import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
  6. /**
  7. * @author dpoddar
  8. *
  9. */
  10. @Configuration
  11. @EnableWebSecurity
  12. public class ActuatorSecurity extends WebSecurityConfigurerAdapter {
  13. @Override
  14. protected void configure(HttpSecurity http) throws Exception {
  15. http
  16. .csrf().disable()
  17. .authorizeRequests()
  18. .requestMatchers(EndpointRequest.to("health", "flyway","info")).permitAll()
  19. .requestMatchers(EndpointRequest.toAnyEndpoint()).hasRole("ENDPOINT_ADMIN")
  20. .and()
  21. .httpBasic()
  22. ;
  23. }
  24. }

展开查看全部
pxyaymoc

pxyaymoc2#

执行器不再有单独的上下文。
假设是,只要非执行器端点不需要安全限制,以下配置就可以工作。

  1. @Configuration
  2. public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
  3. @Override
  4. protected void configure(HttpSecurity http) throws Exception {
  5. http.authorizeRequests().requestMatchers(EndpointRequest.toAnyEndpoint()).authenticated().anyRequest().permitAll()
  6. .and().formLogin();
  7. }
  8. }

字符串
EndpointRequest处理匹配任何Actuator端点,为测试提供表单登录。请注意,即使/info/health也是安全的。EndpointRequest有更多粒度选项;此外,在Sping Boot 2中,默认情况下仅启用infohealth
或者,您可以只保护其他API使用的任何安全机制后面的路径
我在这里推了一个示例应用程序,
https://github.com/DarrenForsythe/secure-spring-actuator-only

展开查看全部
y1aodyip

y1aodyip3#

其工作

  1. package com.example.demo.config;
  2. import org.springframework.boot.actuate.autoconfigure.security.servlet.EndpointRequest;
  3. import org.springframework.context.annotation.Configuration;
  4. import org.springframework.security.config.annotation.web.builders.HttpSecurity;
  5. import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
  6. @Configuration
  7. public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
  8. @Override
  9. protected void configure(HttpSecurity http) throws Exception {
  10. http.authorizeRequests().requestMatchers(EndpointRequest.toAnyEndpoint()).authenticated().anyRequest().permitAll().and()
  11. .httpBasic()
  12. ;
  13. }
  14. }

字符串

展开查看全部

相关问题