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),我在示例应用程序中看到了相同的行为。管理安全性似乎完全独立于示例内存身份验证中配置的user
和admin
用户。
这个可以改成使用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设置为默认属性文件,我在这里遗