当前位置: 首页 > 知识库问答 >
问题:

配置执行器endpoint安全性

司寇灵均
2023-03-14

Spring Boot执行器endpoint默认受基本http安全保护。

这个可以改成使用Spring Security吗?我已经成功地设置了Spring Security并使用它来保护我的其他页面。

我尝试了security.basic.enabled:false并在授权请求中添加了.antmatchers(“/manage/**”).hasRole(“admin”)(注意,我使用了不同的url作为endpoint的根用户),但这没有帮助。我一直得到一个基本的http身份验证日志,它不是用户在AuthenticationManager中配置的。

编辑-提供更多详细信息-

我的application.java看起来像:

@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application extends WebMvcConfigurerAdapter {


    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/app").setViewName("app/index");
        registry.addViewController("/app/login").setViewName("app/login");
    }

    @Bean
    public ApplicationSecurity applicationSecurity() {
        return new ApplicationSecurity();
    }

    @Order(Ordered.LOWEST_PRECEDENCE - 8)
    protected static class ApplicationSecurity extends WebSecurityConfigurerAdapter {

        @Override
        protected void configure(AuthenticationManagerBuilder auth) throws Exception {
            // @formatter:off
            auth.inMemoryAuthentication()
                .withUser("test1")
                    .password("test1pw")
                    .roles("USER", "ADMIN")
                    .and()
                .withUser("test2")
                    .password("test2pw")
                    .roles("USER");
            // @formatter:on
        }

        @Override
        protected void configure(HttpSecurity http) throws Exception {
            // @formatter:off
            http
                .csrf()
                    .disable()
                .authorizeRequests()
                    .antMatchers("/app/login").permitAll()
                    .antMatchers("/app/**").hasRole("USER")
                    .antMatchers("/manage/**").hasRole("ADMIN")
                    .and()
                .formLogin()
                    .loginPage("/app/login")
                    .failureUrl("/app/login?error")
                    .defaultSuccessUrl("/app")
                    .permitAll()
                    .and()
                .logout()
                    .logoutUrl("/app/logout")
                    .logoutSuccessUrl("/app/login?logout");
            // @formatter:on
        }

        @Override
        public void configure(WebSecurity web) throws Exception {
            // @formatter:off
            web
                .ignoring()
                    .antMatchers("/assets/**");
            // @formatter:on
        }
    }
}

在我的application.yml中还有:

management:
  context-path: /management
@Override
protected void configure(HttpSecurity http) throws Exception {
    // @formatter:off
    http
        .authorizeRequests()
            .antMatchers("/app/login").permitAll()
            .antMatchers("/app/**").hasRole("USER")
            .antMatchers("/manage/**").hasRole("ADMIN")

但这不起作用。注其他授权匹配器也起作用。我想知道是否与时间/顺序有关。我从示例中复制了@order(ordered.lowest_brecence-8),但我不知道为什么要使用-8。

为了更深入地研究,我自己也运行了这个示例(https://github.com/spring-projects/spring-boot/blob/master/spring-boot-samples/spring-boot-sample-web-method-security),我在示例应用程序中看到了相同的行为。管理安全性似乎完全独立于示例内存身份验证中配置的useradmin用户。

共有1个答案

易宣
2023-03-14

这个可以改成使用Spring Security吗?

它是Spring Security(您认为我们还会使用什么?)。如果您只想保留默认的安全规则并自定义authenticationManager,那么如果您按照Spring security团队的建议使用authenticationManagerBuilder,它就应该起作用。安全方法示例具有您要查找的行为,因此您可以从那里复制配置模式。如果您想要替换启动默认身份验证策略,关键是要在GlobalAuthenticationConfigurerAdapter中配置AuthenticationManager(如示例中所示)。

您可以使用management.security.enabled=false关闭管理安全性(假设Spring Security性位于类路径上)。用户指南中提到了这一点,但请随意提出澄清意见。

 类似资料:
  • 我使用Spring Boot ()和Jersey (pom依赖项:< code > spring-boot-starter-Jersey ,< code > spring-boot-starter-actuator ,< code > spring-boot-starter-web ,< code > spring-boot-starter-security )。 我有一个泽西岛endpoint(

  • Spring Boot RESTful web service&Swagger2。我有以下类设置来为我的服务配置Swagger:

  • 首先,我是Spring启动框架的新手。我已经在执行器上工作了几天,并且能够设置endpoint来监控系统。当我集成JWT以确保安全性时,我的所有执行器endpoint都坏了。 如何禁用位于Spring启动安全性之上的执行器endpoint的JWT安全性?以下是我的application.yml文件属性。

  • 我一直在阅读Spring引导执行器,我很难区分两个应用程序。属性设置 我想自定义执行器endpoint的访问规则。我可以使用属性控制所有执行器endpoint灵敏度。我的理解是,敏感endpoint将需要授权。我还可以通过属性更改endpoint的可访问性。 敏感度控制和安全启动之间有什么区别?

  • 我正在Lynda.com https://www.lynda.com/spring-tutorials/spring-boot-actuator/653258/709599-4.html?autoplay=true上学习spring-boot教程,演示者简单地说关闭管理安全性这就是application.yml的样子 是否有一种方法可以将application.yml设置为默认属性文件,我在这里遗