当前位置: 首页 > 知识库问答 >
问题:

Java Spring Vault:密码中的汉字,变成了“?”在应用程序中

宋英杰
2023-03-14

关于Spring Boot 2.4.2应用程序的小问题,我需要检索存储在Vault中的密码,请包含特殊/中文字符。

安装程序:一个Hashicorp Vault实例,它存储了我们的密码。到目前为止一切都很好,对于大多数密码,它都安全地存储了它们,我们可以检索它们,非常高兴。

一旦应用程序检索到密码,它将用于向某些第三方API发出http请求。第三方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 kv get secret/creds
====== Data ======
Key         Value
---         -----
password.from.vault    password-新年快乐-password

不幸的是,这似乎会导致问题。API调用开始失败,在快速调试会话之后,第三方向我们保证他们从日志中看到了这一点

X-the-password: password-????-password

基本上,我们没有发送正确的密码(带有特殊/中文字符的密码)

我已经尝试了这个认为这是一个编码问题但不工作都没有

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获得包含特殊字符的正确密码?

非常感谢。

共有1个答案

高恺
2023-03-14

如果这些转义的ascii字符(例如新年快乐), 如果它们是从web UI插入的,则会自动作为新年快乐.

为了在运行时获取它们,应使用vault cli插入它们,例如,如u5317\u4eac

 类似资料:
  • 问题内容: 我实现了一个例程,当用户提交表单时,会将电子邮件发送给管理员。为此,我使用了Java Mail API。我设置了一个虚拟帐户,用于发送电子邮件。在代码中,我对密码进行了硬编码。我担心在托管网页时这将是一个安全问题。 这是我的代码。 我写了一个私有函数: 在我的公共方法中,我调用该方法并生成消息。 托管网页时,在会话方法中对密码进行硬编码是否安全? 如果没有,那么一些实现替代方案的指针。

  • 问题内容: 我正在开发一个从数据库读取一些数据的应用程序。通过标准登录/密码机制执行与数据库的连接。 问题是:如何存储数据库密码?如果我将其存储为类成员,则可以通过反编译操作轻松检索它。 我认为混淆并不能解决问题,因为在混淆代码中也可以轻松找到字符串密码。 有人有建议吗? 问题答案: 切勿将密码硬编码到您的代码中。最近在最危险的25个编程错误中提到了这一点。 将秘密帐户和密码硬编码到您的软件中非常

  • 对于一个小的编码项目,我在iPhone上手动安装了我自制的颤振应用程序。此应用程序有一个注册页面,用户可以在其中填写电子邮件和密码以注册该应用程序。为了启用iOS自动强密码,我使用了Flatter AutofillGroup小部件,并向相应的文本字段提供了相应的AutoFillHights: 当我运行我的手机上的应用程序,自动提示工作作为预期的TextField,但在点击密码TextField我得

  • 我已经创建了一个聊天应用程序,为了完成它,我必须实现一些加密算法来保护服务器-客户端之间的消息。 我的实现是: 1.客户端创建kaypair(公钥和私钥)并将公钥发送到服务器 2.服务器获取公钥并创建用公钥加密的对称密钥 3.服务器将加密密钥发送给客户端 4.客户端使用私钥解锁对称密钥 5.客户端和服务器使用对称密钥进行通信。 这部分代码是服务器获取公钥并发送加密的对称密钥的地方 密钥加密方法:

  • 问题内容: 我在RapidMiner中有一个文本分类过程。它从指定的excel ssheet读取测试数据并进行分类。我还有一个小型Java应用程序,它正在运行此过程。现在,我想在应用程序中添加文件输入部分,以便每次我都可以从应用程序(而不是RapidMiner)中指定excel文件。有什么提示吗? 这是代码: 这是错误: 最好的祝福 Armen 问题答案: 我看到两种方法可以做到这一点。 第一个方

  • 本文向大家介绍php 把数字转换成汉字的代码,包括了php 把数字转换成汉字的代码的使用技巧和注意事项,需要的朋友参考一下 直接上实例,写到 千亿上了。 方法二: 以上所述就是本文的全部内容了,希望大家能够喜欢。