请注意,给 spring.data.mongodb.password 设置的值是用单引号(')引起来的,前缀为 {cipher}。这会让 Config Server 识别到,这是一个加密值,而不是普通的未加密值。
对 application.yml 的修改提交并推送到到 Git 存储库以后,Config Server 就准备好了提供加密属性服务。要查看它的运行情况,可使用 curl 模拟客户端调用:
如你所见,属性 spring.data.mongodb.password 的值是解密的形式。默认情况下,Config Server 提供的任何加密值,在后端 Git 存储库中都是加密的;它们在被使用之前会被解密。这意味着使用 Config Server 的客户端应用程序,不需要任何特殊的代码或配置来接收在 Git 中加密的属性。
如果您希望 Config Server 提供仍然加密的属性,您可以设置 spring.cloud.config.server.encrypt.enabled 属性为 false:
这将导致 Config Server 提供的所有属性值,包括加密属性值,与 Git 存储库中设置的值完全相同。再次使用 curl 命令模拟客户端调用,以显示禁用解密后的效果:
当然,如果客户端接收到加密后的属性值,那么客户端现在就负责自行解密了。
尽管可以将加密的属性存储在 Git 中,再由 Config Server 提供服务。但我们已经看到加密并不是 Git 原生的能力,这需要您做一些工作,以便使用任何写入 Git 存储库的数据。而且,除非您的应用程序自行解密,否则使用 Config Server API 能够让任何人获取解密后的信息。让我们看看另一种配置 Config Server 的选择,它只为那些有权看到他们的使用方提供服务。