Java + Spring + Vault: 密码中的汉字,变成了“???”在应用程序中
Java + Spring + Vault: Chinese character in a password, became "???" in the app
关于 Spring Boot 2.4.2 应用程序的小问题,我需要在其中检索存储在 Vault 中的密码,请包含 special/Chinese 个字符。
设置:
存储我们密码的 Hashicorp Vault 实例。到目前为止一切顺利,对于大多数密码,它正在安全地存储它们,我们可以检索它们,非常高兴。
应用程序检索到密码后,它用于向某些第三方发出 http 请求 API。第三方API通过其他渠道给我们密码,我们将其存储在Vault中(问题不在这里)
我们通过这种方式取回密码,使用 Spring Vault 库。
@Value("${password.from.vault}")
private String passwordFromVault;
并以这种方式进行 http 调用
webClient.mutate().baseUrl("https://third-party").build().get().uri("/uri").header("X-the-password", passwordFromVault ).[...]
当 Vault 中的密码是纯英文字母时,这可以正常工作。
现在,对于某些密码,我们看到它们带有特殊汉字
$ vault kv get secret/creds
====== Data ======
Key Value
--- -----
password.from.vault password-新年快乐-password
不幸的是,这似乎会导致问题。
API 调用开始失败,在快速调试会话后,第三方向我们保证他们从他们的日志中看到了这一点
X-the-password: password-????-password
基本上声明,我们没有发送正确的密码(带有 special/Chinese 个字符的密码)
我试过这个,认为这是一个编码问题,但都不起作用
final String pleaseHelp = new String(passwordFromVault.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
webClient.mutate().baseUrl("https://third-party").build().get().uri("/uri").header("X-the-password", pleaseHelp ).[...]
问题,请问如何检索和发送请求,以便第三方 API 获得包含特殊字符的正确密码?
谢谢
如果那些转义的 ascii 字符(例如新年快乐),如果它们是从网络中插入的 UI,则会自动插入为新年快乐。
为了在 运行 时获取它们,应该使用 vault cli 插入它们,例如 \u5317\u4eac
关于 Spring Boot 2.4.2 应用程序的小问题,我需要在其中检索存储在 Vault 中的密码,请包含 special/Chinese 个字符。
设置: 存储我们密码的 Hashicorp Vault 实例。到目前为止一切顺利,对于大多数密码,它正在安全地存储它们,我们可以检索它们,非常高兴。
应用程序检索到密码后,它用于向某些第三方发出 http 请求 API。第三方API通过其他渠道给我们密码,我们将其存储在Vault中(问题不在这里)
我们通过这种方式取回密码,使用 Spring Vault 库。
@Value("${password.from.vault}")
private String passwordFromVault;
并以这种方式进行 http 调用
webClient.mutate().baseUrl("https://third-party").build().get().uri("/uri").header("X-the-password", passwordFromVault ).[...]
当 Vault 中的密码是纯英文字母时,这可以正常工作。
现在,对于某些密码,我们看到它们带有特殊汉字
$ vault kv get secret/creds
====== Data ======
Key Value
--- -----
password.from.vault password-新年快乐-password
不幸的是,这似乎会导致问题。 API 调用开始失败,在快速调试会话后,第三方向我们保证他们从他们的日志中看到了这一点
X-the-password: password-????-password
基本上声明,我们没有发送正确的密码(带有 special/Chinese 个字符的密码)
我试过这个,认为这是一个编码问题,但都不起作用
final String pleaseHelp = new String(passwordFromVault.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
webClient.mutate().baseUrl("https://third-party").build().get().uri("/uri").header("X-the-password", pleaseHelp ).[...]
问题,请问如何检索和发送请求,以便第三方 API 获得包含特殊字符的正确密码?
谢谢
如果那些转义的 ascii 字符(例如新年快乐),如果它们是从网络中插入的 UI,则会自动插入为新年快乐。
为了在 运行 时获取它们,应该使用 vault cli 插入它们,例如 \u5317\u4eac