gpt4 book ai didi

spring-boot - Spring boot 2.1.x 如何使用基本身份验证保护执行器端点

转载 作者:行者123 更新时间:2023-12-05 05:12:18 30 4
gpt4 key购买 nike

我正在尝试构建一个 spring boot 应用程序并想利用 Actuator 功能,但我想保护 Actuator/health、/shutdown 等端点的安全。我有以下似乎不起作用的配置。即,应用程序从不提示输入凭据,或者当 postman 点击时不提供 403。我尝试了各种方法,甚至是 spring 文档中的方法。任何人都可以帮助解决这个问题。同样,这是 spring boot 2.1.x。我知道在之前版本的spring中application.yml里面有配置可以的

@Configuration
public class ActuatorSecurity extends WebSecurityConfigurerAdapter {

@Override
protected void configure(HttpSecurity http) throws Exception {

http.authorizeRequests()
.requestMatchers(EndpointRequest.to(ShutdownEndpoint.class, InfoEndpoint.class, HealthEndpoint.class,
MetricsEndpoint.class))
.hasRole("ENDPOINT_ADMIN").requestMatchers(PathRequest.toStaticResources().atCommonLocations())
.authenticated().and().httpBasic();
}

应用程序.yml

spring:
security:
user:
name: admin
password: admin
roles:
- ENDPOINT_ADMIN

management:
endpoints:
web:
exposure:
include: "*"
endpoint:
shutdown:
enabled: true
health:
show-details: when-authorized
roles:
- ENDPOINT_ADMIN
mappings:
enabled: true

最佳答案

此代码可以作为您实现 Actuator Endpoints Spring Boot 2.X 的 BasicAuth 的引用。这不是确切的代码。在扩展 WebSecurityConfigurerAdapter 时,您必须配置 AuthenticationManagerBuilder 来为角色分配角色和密码。我在这里使用“noop”密码编码器,您可以使用不同的密码编码器来提供更高的安全性。

protected void configure(AuthenticationManagerBuilder auth) throws Exception {

auth.inMemoryAuthentication().withUser("ROLE_USER").password("{noop}" + "USER_PWD").roles("USER").and()
.withUser("ROLE_ADMIN").password("{noop}" + "ADMIN").roles("ADMIN", "USER");
}

配置 AuthenticationManagerBuilder 后,现在通过禁用 csrf 配置 HttpSecurity。下面的代码需要使用任何角色单独对指标进行身份验证。您可以根据需要验证的端点进行自定义。确保从此身份验证中排除 Rest Controller 的基本 url。您可以在下面的配置代码中插入 authorizeRequests().antMatchers("/baseurl").permitAll().and() 来实现这一点。以下是配置 HttpSecurity 的示例。

protected void configure(Httpsecurity http) {
http.csrf().authorizeRequests().requestMatchers(EndpointRequest.to(MetricsEndpoint.class))
.hasANyRole("ADMIN","USER").and().authorizeRequests().and().httpBasic();
}

关于spring-boot - Spring boot 2.1.x 如何使用基本身份验证保护执行器端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54716532/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com