上一篇Eureka 實現微服務注冊發現講了用 Eureka 實現單體版的服務注冊與發現。因為本篇是在上一篇的基礎上的一點擴充,所以讀此篇之前要保證看了上一篇。
Eureka 如果不加安全控制,會存在下列問題:
- Eureka 控制台可以看到各服務的狀態和參數等信息,如果不加控制,只要知道注冊中心的地址,就可以登錄上去看到各服務信息;
- 只要知道注冊中心地址,服務提供者就可以注冊上來,對外提供服務;
- 只要知道注冊中心地址,服務消費者就可以發現注冊中心的服務,並調用服務;
為了安全起見,我們還是為 Eureka 增加安全控制,這里用 Spring Security 實現最基礎的用戶名、密碼控制。
一個小知識點而已,幾個配置就可以完成。
1. maven 包引用
在服務注冊中心項目的 pom.xml 文件中引入 Spring Security 包。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
2.增加應用配置
在應用配置文件中增加關於 security 的配置,一般是放在 application.yml ,但是本項目中分了 application.yml 和 bootstrap.yml 兩個配置文件,所以我這里是放在了 application.yml 中。
spring:
application:
name: kite-eureka-center
security:
user:
name: test # 用戶名
password: 123456 # 密碼
此時,啟動並訪問 Eureka 管理控制台,會提示輸入用戶名和密碼,輸入上面的 name 和 password 即可。
3.服務提供者注冊服務
在服務提供者的應用配置文件中做以下修改即可
eureka:
instance:
statusPageUrlPath: /actuator/info
healthCheckUrlPath: /actuator/health
prefer-ip-address: true
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://test:123456@localhost:3000/eureka/
上述配置與沒有安全控制的時候唯一的差別就是在 defaultZone 指定的 eureka 地址。在地址中增加了用戶名和密碼。
沒有安全控制之前的地址為:
http://localhost:3000/eureka/
加了安全控制之后的地址為:
http://test:123456@localhost:3000/eureka/
4.服務消費者
服務消費者和服務提供者配置方式一致。
具體的代碼已經放到 github
如果你覺得寫的還可以的話,請點個「推薦」吧
歡迎關注,不定期更新本系列和其他文章
古時的風箏
,進入公眾號可以加入交流群