我有一个正在运行的Spring Boot应用程序(Spring Boot v2.4.1),我想用Spring Boot Admin监控它。
我已经安装了服务器,可以在/actuator/endpoint不安全的情况下监视应用程序的实例。我有一张照片在上面。
现在我想保护它,但我不知道如何在不干扰我当前安全配置的情况下做到这一点。
我将Spring Security配置为匹配数据库中的用户名和密码以及CustomAuthenticationProvider。如果可能,我想添加一个具有HTTP基本身份验证的执行器endpoint。
这是我当前的安全配置:
http.
authorizeRequests()
.antMatchers("/admin/**").hasAuthority(AUTHORITY_ADMIN)
.antMatchers("/user/**").hasAnyAuthority(AUTHORITY_ADMIN, AUTHORITY_USER)
.anyRequest().authenticated()
.and()
.csrf().disable()
.formLogin()
.loginPage("/login")
.failureUrl("/login?error=true")
.successHandler(new CustomUrlAuthenticationSuccessHandler(translator))
.usernameParameter("username")
.passwordParameter("password")
.and()
.logout()
.logoutUrl("/logout")
.logoutSuccessUrl("/")
.and()
.exceptionHandling().accessDeniedPage("/403")
.and()
.headers().frameOptions().sameOrigin();
我想保留该配置,并告诉Spring,每当用户点击 /actuator/endpoint时,它将需要HTTP Basic Security凭据。
我在考虑有两个@Configuration类,扩展WebSecurityConfigrerAdapter。一个是我已经得到的,另一个用于执行器endpoint。但是我运气不好。
非常感谢。
非常感谢你
我就是这样解决的:我创建了一个新的@configurationon
类,扩展websecurityConfigureAdapter
,
我无法停止使用WebSecurityConfigureAdapter
(正如@Marcus Hert da Coregio在评论中所建议的那样),因为如果我不扩展它,我就无法定义我的自定义身份验证提供程序
。
这个类有@Order(1)
,因此它将优先于我的其他初始配置(我将其设置为@Order(2)
)。这就是它的内容:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.antMatcher("/actuator/**")
.csrf().disable()
.authorizeRequests()
.anyRequest().authenticated()
.and()
.httpBasic()
.and()
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
}
然后,我的自定义AuthenticationProvider
将验证访问致动器endpoint的给定凭据是否有效。
这失败的原因第一次我测试它是因为我没有设置初始
.antMatcher("/actuator/**")
通过添加它,我告诉SpringSecurity这个配置应该只应用于那些endpoint。我从这篇文章中得到了这个概念
我希望这对将来的人有所帮助
您可以创建两个SecurityFilterChain
bean,一个用于具有更高优先级的/执行器/**
endpoint,另一个用于具有较低优先级的其他endpoint,如下所示:
@Bean
@Order(1)
public SecurityFilterChain actuatorWebSecurity(HttpSecurity http) throws Exception {
http.requestMatchers((matchers) -> matchers
.antMatchers("/actuator/**"));
http.authorizeRequests((authz) -> authz
.anyRequest().authenticated());
http.httpBasic();
http.userDetailsService(myUserDetailsService);
...
return http.build();
}
@Bean
@Order(2)
public SecurityFilterChain defaultWebSecurity(HttpSecurity http) throws Exception {
// your current configuration
}
在这种配置中,@Order
注释告诉顺序,SecurityFilterChain
s将根据请求进行匹配。
问题内容: 这是我的情况: 一个Web应用程序对许多应用程序执行某种SSO 登录的用户,而不是单击链接,该应用就会向正确的应用发布包含用户信息(名称,pwd [无用],角色)的帖子 我正在其中一个应用程序上实现SpringSecurity以从其功能中受益(会话中的权限,其类提供的方法等) 因此,我需要开发一个 自定义过滤器 -我猜想-能够从请求中检索用户信息,通过自定义 DetailsUserSe
我们有一个spring boot应用程序(spring boot 2.1.4版),它公开了一个用Oauth2保护的Rest API。 我们还需要将spring boot提供的健康检查(致动器)endpoint公开给一个只支持基本身份验证的遗留监控工具。 但是,由于spring boot 2与常规应用程序安全规则共享安全配置,所以到目前为止我能看到的唯一选项是用Oauth2保护它或者不保护它()。
我正在将应用程序的安全性迁移到Spring Security4.0。我的要求是身份验证应该是JAAS身份验证,自动化数据将从数据库中提取。所以我已经编写和自定义了身份验证提供程序。但我的问题是Spring没有将身份验证请求委托给我的自定义身份验证提供程序。 代码如下 web.xml条目 调用堆栈
如何通过使用Spring Security和Java配置来定义自定义身份验证提供程序?我想在我自己的数据库上执行一个登录检查凭据。
我想为Spring Security配置L 我配置spring-security.xml指出m 如何设置为 Spring,使用我的自定义类而不是他的 deafaul LDAP 身份验证提供程序?
在我的firebase应用程序中,用户可以使用 Google(Firebase的联邦提供商)或 Slack(作为自定义身份验证提供程序实现) 我想给用户链接两个帐户的机会。所以我要开的案子是: 用户使用Google登录 用户转到“设置”并单击“使用松弛连接” 然后应该链接用户帐户,以便他下次可以使用Slack或Google登录 我现在想知道,我是否可以通过某种方式从我的自定义松弛身份验证获得一个A