之前的工程存在两个问题:
1)可以随意通过url获取到config-server的内容,不安全。
2)配置文件保存在git中,配置中的敏感信息有泄漏风险;
本文的目的就是解决以上两个问题,使用的工程是上一篇的工程。
一.使用spring-security来限制通过url获取配置内容。
1.在config-server工程中增加依赖:
|
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
|
2.在config-server工程的配置文件中,增加:
|
security.user.name=xx
security.user.password=123456
|
3.此时通过url获取配置信息,会出现如下界面:
输入上一步设置的用户名和密码后才能获取到,否则页面会报404。在输入了正确的用户名密码后,浏览器会返回一个Authorization的头信息,之后的请求会带上这个头信息,表示已登录,清除缓存后需要再次登录。
至此,解决了第一个问题。
二.对配置文件的敏感信息加密
1.下载一个不限长度的JCE,百度即可。我的是jdk1.7,下载地址是http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html。
2.将下载后的文件解压,得到:
将两个jar包放入 JAVA_HOME/jre/lib/secerity下,覆盖同名文件。
3.在config-server工程的配置文件中,增加配置:
|
#加密密钥
encrypt.key=key1
|
4.使用postman等工具,用post方式请求http://localhost:9999/encrypt接口,参数类型选择raw(如果名文中含有特殊字符,则还需要将text这里选择为 plain/text ),输入要加密的明文,得到的结果就是加密后的密文:
用post方式请求http://localhost:9999/decrypt接口,参数类型选择raw,输入密文,得到的结果就是解密后的明文:
使用的时候,将密文配置到git中,但是需要一个{cipher}前缀:
此时,在git中查看是密文,通过url和config-client中获取到的就是明文:
注意:如果配置了第一步的spring-security,那么在操作decrypt 和 encrypt接口的时候,需要携带Authorization头信息,值可以通过url方式登录后刷新页面查看请求头。
至此,解决了第二个问题。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/a561066292/article/details/81357993
内容来源于网络,如有侵权,请联系作者删除!