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 为管理服务器提供的更丰富的安全方案。

results matching ""

    No results matching ""