
前些天棧長在微信公衆号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
如上圖所示,注冊執行個體出現在 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 控制台頁面會先要跳到登入頁面做登入認證才能通路,如下圖所示。
好了,今天的分享就到這裡了,後續會分享更多 Eureka 進階玩法,棧長正在拼命撰寫中……