前言
本来想用一节就写完SpringBootAdmin的,但随着研究的深入发现一节应该是不够的,网上的资料也不会非常系统,官网的例子有些已经好几年没更新了,所以接下来还是系统性的来写下吧
第一节 完成基础配置,暴露所有端点
第二节 给SpringBootAdmin的server端加入spring security安全控制
第三节 给SpringBootAdmin的client端加入spring security安全控制
第四节 配置SpringBootAdmin日志管理
第五节 配置SpringBootAdmin电子邮件通知
一、给client加入spring security
在没有给client加入安全控制之前,我们是可以随意访问http://localhost:9091/actuator 这类地址的
这样肯定是不安全的,而且一般来说,client端肯定已经配置好security了。接下来加入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
重启以后我们发现,client仍旧可以注册上线,client端的自身的访问也需要密码了,应用墙里面显示的数据很少:
想要显示和之前一样的数据,那么就要让server端可以访问client端暴露出的actuator。
二、client端配置账号
同样先个security配置账号,我们这里还是采用简单配置文件处理,正常client端还是数据库持久化的配置比较多。
# admin client security account
spring.security.user.name=client
spring.security.user.password=client
然后增加配置类
@Configuration
public class SecurityConfig {
@Bean
protected SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
return http.authorizeHttpRequests((authorizeRequests) -> authorizeRequests
.anyRequest()
.authenticated())
.formLogin()
.and()
.httpBasic(Customizer.withDefaults())
.csrf().disable().build();
}
}
client端配置完毕后,基本上可以实现对client的安全控制了,当然正常的client端的security配置肯定会比这个复杂,比如会自定义登录,权限等工作。
三、server端配置账号
最后我们对server端配置下探的client账号就可以,记得用户名和密码要跟client端配置的一致。
# admin client account
spring.boot.admin.instance-auth.default-user-name=client
spring.boot.admin.instance-auth.default-password=client
重启服务,现在可以正常访问所有的细节信息了。同时也能保证client端的安全性了。