当前位置:   article > 正文

【微服务笔记15】微服务组件之Config配置中心实现用户认证、配置属性加解密_configserver 访问

configserver 访问

这篇文章,主要介绍微服务组件之Config配置中心实现用户认证、配置属性加解密。

目录

一、用户认证

1.1、引入security依赖

1.2、服务端ConfigServer添加访问配置

1.3、客户端ConfigClient添加访问配置

二、配置属性加解密

2.1、对称加密

(1)检车是否支持对称加密

(2)加密配置属性

(3)加密内容保存到配置中心

(4)客户端测试

2.2、非对称加密

(1)keytool生成密钥文件

(2)防止maven忽略config.keystore文件

(3)添加非对称加解密配置

(4)加密配置属性

(5)修改配置中心属性


一、用户认证

前面两篇文章主要介绍了如何搭建Config配置中心的运行环境,那种环境下,任意的用户都可以访问Config配置中心的配置文件,这在实际开发中是不允许的,容易导致安全问题,所以一般都需要进行用户认证操作,只有授予了访问权限的用户才能够访问Config配置中心。

Config配置中心实现用户认证,是依赖于Security模块,我们只需要引入spring-security依赖即可。

1.1、引入security依赖

  1. <!-- 引入 Security 依赖 -->
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-security</artifactId>
  5. </dependency>

1.2、服务端ConfigServer添加访问配置

【application.yml】配置文件中,添加用户认证的相关配置信息,如下所示:

  1. spring:
  2. # 添加用户认证配置
  3. security:
  4. user:
  5. name: user # 默认就是 user 用户名称
  6. password: root # 登录密码

1.3、客户端ConfigClient添加访问配置

ConfigServer服务端添加了Security用户认证的配置,那么客户端在访问服务端的时候,就需要带上用户名和密码,这就需要在ConfigClient客户端工程中的【bootstrap.yml】配置文件中进行设置(注意:一定要在bootstrap.yml配置文件中设置)。

  1. spring:
  2. cloud:
  3. config:
  4. # 用户认证
  5. username: user # 访问 config server 的用户名称
  6. password: root # 访问 config server 的登录密码

经过上面三个步骤,就已经完成Config配置中心的用户认证功能了。

二、配置属性加解密

Config配置中心的配置属性,目前都是采用明文的形式保存在Git上面,但是针对一些隐私数据,实际开发中肯定是要进行加密存储的,这样可以避免因为配置文件泄露,导致安全问题。

配置属性加解密有两种方式,分别是:对称加密算法、非对称加密算法。

2.1、对称加密

对称加密是最简单的一种加解密算法,加密和解密时候都是采用相同的密钥,这种方式也有缺点,那就是一旦密码泄露,就会导致隐私数据泄露。

(1)检车是否支持对称加密

启动Config Server服务端工程,浏览器访问【http://localhost:9999/encrypt/status】地址,查看是否具备对称加解密的功能。

  • 如果出现下图所示情况,则说明具备加解密功能,但是现在还缺少加解密的密钥策略。

  • 如何解决上图所示的错误呢???

在Config Server服务端工程的【bootstrap.yml】配置文件中,添加密钥key配置(注意:一定要在boostrap.yml文件中添加)。

  1. # 对称加解密的key配置
  2. encrypt:
  3. key: config_encrypt_key # 这里自定义写一个加解密使用的key密钥即可
  • 配置密钥之后,重新启动ConfigServer服务端工程。

出现上面的情况,就说明Config Server服务端已经具备加解密的环境了。

(2)加密配置属性

在配置中心服务端中,提供了【http://localhost:9999/encrypt】接口地址,用于加密操作,我们可以在CMD命令行中,使用curl命令进行属性的加密,然后将加密之后的属性保存到Git上面。

 命令如下所示:

  1. # -d 后面的内容就是需要加密的明文内容
  2. curl http://localhost:9999/encrypt -d root

(3)加密内容保存到配置中心

进入配置中心,找到对应的配置文件,然后将加密之后的内容,填入到指定的属性后面,需要注意的是,这个内容必须是按照如下规则填写:

'{cipher}后面跟着加密的内容'

下面是我配置的内容:

(4)客户端测试

启动客户端,然后获取password属性,查看是否为解密之后的内容,如果是则对称加解密成功。

需要注意的是,Config加解密是发生在Config Server服务端的,Config Server会从Git上面获取到加密之后的属性,然后解密之后再将属性发送给Config Client客户端程序。

2.2、非对称加密

非对称加密,是指:采用一对密钥,一个是公钥、一个是私钥,客户端拿着公钥进行数据的加密,服务端拿着私钥进行密文的解密。要使用非对称加密,需要生成一个密钥配置文件,这里我们可以采用JDK自带的【keytool】工具来生成密钥配置文件。

(1)keytool生成密钥文件

在某个目录下面,打开CMD命令行窗口,执行如下命令:

  1. # keytool 生成密钥文件的命令工具
  2. # -genkeypair 生成密钥对
  3. # -keystore 用于指定密钥对文件名称路径,我这里就叫做config.keystore文件
  4. # -alias 别名,这叫做config
  5. # -keyalg 非对称加解密算法
  6. # -keypass 密码,这里叫做config
  7. # -storepass 存储密码,这里叫做config
  8. keytool -genkeypair -keystore config.keystore -alias config -keyalg RSA -keypass config -storepass config

执行命令之后,此时会让你输入一些内容,如下:

执行成功之后,此时在对应的目录下面就会生成一个【config.keystore】文件,然后将这个文件复制到Config Server服务端工程的【resources】类路径下面。

(2)防止maven忽略config.keystore文件

maven默认情况下,是不会将config.keystore文件打包到classes目录的,所以需要在pom中添加配置:

  1. <build>
  2. <resources>
  3. <resource>
  4. <directory>src/main/resources</directory>
  5. </resource>
  6. <resource>
  7. <directory>src/main/java</directory>
  8. <includes>
  9. <include>**/*.xml</include>
  10. <include>**/*.yml</include>
  11. <include>**/*.properties</include>
  12. <include>**/*.keystore</include>
  13. </includes>
  14. <filtering>false</filtering>
  15. </resource>
  16. </resources>
  17. </build>

(3)添加非对称加解密配置

在Config Server服务端工程中的【bootstrap.yml】文件里面,添加如下配置信息:

  1. # 非对称加密的配置
  2. encrypt:
  3. key-store:
  4. location: classpath:config.keystore # 密钥对文件的路径
  5. alias: config # 密码对别名,和生成密钥对时候那个alias保持一致
  6. password: config # 对应 storepass 的值
  7. secret: config # 对应 keypass 的值,私钥

(4)加密配置属性

打开CMD命令行窗口,执行命令,生成密文。

命令如下所示:

curl http://localhost:9999/encrypt -d root_2023

(5)修改配置中心属性

修改配置中心的password属性值,将其替换成非对称加密之后的密文内容。

启动客户端工程,访问测试是否能够正常获取加密之后的属性。

到此,Config配置中心实现用户认证、配置属性加解密就完成啦。

综上,这篇文章结束了,主要介绍微服务组件之Config配置中心实现用户认证、配置属性加解密。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/84112
推荐阅读
相关标签
  

闽ICP备14008679号