16.3.1 在 Admin 服务端中启用登录
Admin 服务端默认没有安全措施,所以给 Admin 服务端添加安全保护是一个好主意。Admin 服务端本质就是一个 Spring Boot 应用程序,所以您可以像保护任何其他 Spring Boot 应用程序一样进行设置,而且与任何受 Spring Security 保护的应用程序一样,您可以自由决定哪种安全方案最适合您的需要。
最简单的方式,您只需将 Spring Boot Security starter 添加到 Admin 服务端构建中。若使用 Initializr ,可通过选中 Security 复选框,或者添加以下内容到项目 pom.xml 文件中:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
这样您就不必一直查看 Admin 服务端的日志来查找随机生成的密码了。您可以在 application.yml 中配置一个简单的管理用户名和密码:
spring:
security:
user:
name: admin
password: 53cr3t
现在,当在浏览器访问 Admin 服务端时,会弹出 Spring Security 默认登录表单,提示您输入用户名和密码。输入上边代码片段中的 admin 和 53cr3t,就可以登录进入。
默认情况下,Spring Security 将在 Spring Boot Admin 服务端上启用 CSRF,这将防止客户端应用程序在 Admin 服务端上注册。因此,我们需要花一点时间禁用 CSRF 的安全配置,如下所示:
package tacos.admin;
import org.springframework.context.annotation.Bean;
import org.springframework.security.config.annotation.web.reactive.EnableWebFluxSecurity;
import org.springframework.security.config.web.server.ServerHttpSecurity;
import org.springframework.security.web.server.SecurityWebFilterChain;
@EnableWebFluxSecurity
public class SecurityConfig {
@Bean
public SecurityWebFilterChain filterChain(ServerHttpSecurity http) throws Exception {
return http
.csrf()
.disable()
.build();
}
}
当然,这是一种极其基础的安全配置,我建议您参考第 5 章,了解 Spring Security 为管理服务器提供的更丰富的安全方案。