2. Spring Cloud Eureka 实现安全控制

作者: 风筝 / 2023-06-02

Eureka, Java, JDK, Spring Cloud

上一篇「Eureka 实现微服务注册发现」讲了用 Eureka 实现单体版的服务注册与发现。因为本篇是在上一篇的基础上的一点扩充,所以读此篇之前要保证看了上一篇。

Eureka 如果不加安全控制,会存在下列问题

  1. Eureka 控制台可以看到各服务的状态和参数等信息,如果不加控制,只要知道注册中心的地址,就可以登录上去看到各服务信息;
  2. 只要知道注册中心地址,服务提供者就可以注册上来,对外提供服务;
  3. 只要知道注册中心地址,服务消费者就可以发现注册中心的服务,并调用服务;

为了安全起见,我们还是为 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。源码地址

文章目录

相关文章

1. Spring Cloud Eureka 实现服务注册与发现
0. Spring Cloud 是什么
3. Spring Cloud Eureka 实现高可用服务发现注册中心
4. Spring Cloud Config 实现配置中心,看这一篇就够了
5. 服务注册发现、配置中心集一体的 Spring Cloud Consul
风筝

作者

风筝

古时的风筝,一个平庸的程序员,主语言 Java,第二语言 Python,其实学 Python 的时间比 Java 还要早。喜欢写博客,写博客的过程能加深自己对一个知识点的理解,同时还可以分享给他人。喜欢做一些小东西,所以也会一些前端的东西,React、JavaScript、CSS 都会一些,做一些小工具还够用。