前言
本来想用一节就写完SpringBootAdmin的,但随着研究的深入发现一节应该是不够的,网上的资料也不会非常系统,官网的例子有些已经好几年没更新了,所以接下来还是系统性的来写下吧
SpringBootAdmin github地址
第一节 完成基础配置,暴露所有端点
第二节 给SpringBootAdmin的server端加入spring security安全控制
第三节 给SpringBootAdmin的clientr端加入spring security安全控制
第四节 配置SpringBootAdmin日志管理
第五节 配置SpringBootAdmin电子邮件通知
第六节 给SpringBootAdmin的client端加入jwt认证
一、加入spring security安全控制
加入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
重启后,再次访问,会跳转到login页面
二、配置server用户名密码
这里可以通过配置文件,内存或者数据库配置用户名密码,具体可以参考下spring security的相关文档。这里我们采用比较的配置文件配置
# admin server
spring.security.user.name=server
spring.security.user.password=server
重启后,就可以用这个账号密码登录了
登录成功后,可以看到登录的账号,但这个时候你会发现注册上来的client不见了。client端会报错如下:
at spring-boot-admin ([http://localhost:9090/instances]): 401 : [no body].
原因是server加入了安全控制,这里我们先配置SecurityConfig来实现访问。加入配置类
@Configuration(proxyBeanMethods = false)
public class SecurityConfig {
@Bean
protected SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
return http.authorizeHttpRequests((authorizeRequests) -> authorizeRequests.anyRequest().permitAll())
.csrf().disable().build();
}
}
再次启动server,发现client已经注册上来了。但是毕竟这个配置类太过暴力,直接所有的request都permitAll,接下来可以参考官方例子SecuritySecureConfig做下修改:
@Configuration(proxyBeanMethods = false)
public class SecurityConfig {
@Bean
protected SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
successHandler.setTargetUrlParameter("redirectTo");
successHandler.setDefaultTargetUrl("/");
return http.authorizeHttpRequests((authorizeRequests) -> authorizeRequests
.requestMatchers(new AntPathRequestMatcher("/login"))
.permitAll()
.anyRequest()
.authenticated())
.formLogin((formLogin) -> formLogin.loginPage("/login").successHandler(successHandler)) // <3>
.logout((logout) -> logout.logoutUrl("/logout"))
.httpBasic(Customizer.withDefaults())
.csrf().disable().build();
}
}
改动以后顺便把登录界面也优化了:
登录以后,我们发现client又掉了,orz。接下来就需要配置下client端了。
配置client访问server的账号密码
修改client的配置文件:
# admin server accout
spring.boot.admin.client.username=server
spring.boot.admin.client.password=server
再重启client,现在client又可重新注册上来了。
文章来源:https://www.toymoban.com/news/detail-537019.html
至此server端的安全控制基本就配置完毕了。文章来源地址https://www.toymoban.com/news/detail-537019.html
到了这里,关于第二节 给SpringBootAdmin的server端加入spring security安全控制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!