Eureka+SpringBoot2.X結合Security注冊中心安全驗證


當我們直接配置完SpringCloudEureka的時候,任何人直接就可以訪問,這樣是極不安全的!!外網的情況下是絕對不允許的!

好在有提供了解決方案,下面拿為我們提供的Security解決

 

SpringCloud版本:

<spring-cloud.version>Greenwich.SR4</spring-cloud.version>

注冊中心

1、pom文件添加security坐標

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

2、在application.yml文件中添加配置(properties一樣,格式稍微變化);如果是集群的話,所有集群配置文件都要修改如下格式

spring:
  security: #開啟安全驗證
    user:
      name: root #用戶名
      password: admin #密碼

3、注冊地址變為如下格式(service-url.defaultZone);如果是集群的話,所有集群配置文件都要修改如下格式

 defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@IP:${server.port}/eureka/ #eureka注冊中心地址

4、添加一個SpringSecurity配置類

import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        super.configure(http);//加這句是為了訪問eureka控制台和/actuator時能做安全控制
        http.csrf().disable();//關閉csrf
    }
}

注冊中心完成!看到如下效果即成功

 

 

 

客戶端

1、修改application.yml配置文件(service-url.defaultZone) 即可

eureka:
  client:
    service-url:
      defaultZone: http://注冊中心配置的用戶名:注冊中心配置的密碼@eureka1:端口/eureka/

 

 

 

下面是我的注冊中心配置(集群版,數量為2)

application.eureka1.yml

spring:
  application:
    name: eureka-server
  security: #開啟安全驗證
    user:
      name: root
      password: admin
server:
  port: 8761
eureka:
  instance:
    hostname: eureka1  #設置eureka實例名,與配置文件的變量為主
  client:
    service-url:
      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@eureka2:${server.port}/eureka/ #eureka注冊中心地址
#  server:
#    enable-self-preservation: false #關閉自我保護:true開啟,false關閉 默認為true
#    eviction-interval-timer-in-ms: 10000 #掃描清理間隔時間(單位:毫秒 默認是60*1000

application.eureka2.yml

spring:
  application:
    name: eureka-server
  security: #開啟安全驗證
    user:
      name: root
      password: admin
server:
  port: 8761
eureka:
  instance:
    hostname: eureka2  #設置eureka實例名,與配置文件的變量為主
  client:
    service-url:
      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@eureka1:${server.port}/eureka/ #eureka注冊中心地址
#server:
      ##    enable-self-preservation: false #關閉自我保護:true開啟 false關閉 默認true
      ##    eviction-interval-timer-in-ms: 10000 #清理間隔時間(單位:毫秒 默認60*1000

 

客戶端配置

spring:
  application:
    name: eureka-provider
server:
  port: 9090

eureka:
  client:
    service-url:
      defaultZone: http://root:admin@eureka1:8761/eureka/,http://root:admin@eureka2:8761/eureka/ #設置服務注冊中心地址,多個之間用","分割
  instance:
    lease-renewal-interval-in-seconds: 1 #每隔1s發送一次心跳,證明自己還活着
    lease-expiration-duration-in-seconds: 2 #告訴服務器如果2s沒有發送心跳,就代表死了,將我剔除掉
management:
  endpoints:
    web:
      exposure:
        include: shutdown #暴漏shutdown端點服務
  endpoint:
    shutdown:
      enabled: true

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM