天天看點

Spring Cloud Eureka 注冊安全一定要做到位!

Spring Cloud Eureka 注冊安全一定要做到位!

前些天棧長在微信公衆号Java技術棧分享了 Spring Cloud Eureka 最新版 實作注冊中心的實戰教程:Spring Cloud Eureka 注冊中心叢集搭建,Greenwich 最新版!,成功進入 Eureka 控制台頁面。

但控制台首頁預設是沒有登入認證保護的,打開就能通路,而且你的微服務也能随意注冊進去,這樣是不安全的,本章棧長将加入登入認證功能,把你的 Eureka 注冊中心保護起來。

本文基于最新的 Spring Cloud Greenwich.SR1 以及 Spring Boot 2.1.3 版本進行分享。

1、加入 Spring Security 依賴

<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-security</artifactId></dependency>      

2、添加安全配置

在 application.yml 配置檔案中添加以下配置:

spring:   security:    user:      name: javastack      password: javastack      

配置用來登入認證的使用者名和密碼。

3、修改defaultZone

需要在 defaultZone 中添加使用者名密碼認證。

defaultZone: http://username:password@eureka:8761/eureka/      

參考配置如下:

defaultZone: http://javastack:javastack@eureka1:8761/eureka/, http://javastack:javastack@eureka2:8762/eureka/      

4、禁用CSRF

Spring Cloud Eureka 注冊安全一定要做到位!

如上圖所示,注冊執行個體出現在 unavailable-replicas 裡面。

這是因為加入了安全認證子產品後,預設會開啟 CSRF 跨站腳本攻擊,需要禁用它,添加以下配置即可。

參考:

https://cloud.spring.io/spring-cloud-netflix/multi/multi_spring-cloud-eureka-server.html#_securing_the_eureka_server
@EnableWebSecurityclass WebSecurityConfig extends WebSecurityConfigurerAdapter {    @Override    protected void configure(HttpSecurity http) throws Exception {        http.csrf().ignoringAntMatchers("/eureka/**");        super.configure(http);    }}      

這樣配置後,打開 Eureka 控制台頁面會先要跳到登入頁面做登入認證才能通路,如下圖所示。

Spring Cloud Eureka 注冊安全一定要做到位!

好了,今天的分享就到這裡了,後續會分享更多 Eureka 進階玩法,棧長正在拼命撰寫中……