在 Java 中存储 TOKEN/password 的最佳实践

Best practice for storing TOKEN/password in Java

我正在开发一个与 REST API 交互的 Java 应用程序。要与此API通信,我必须使用TOKEN,所有这些TOKEN都是敏感数据,我不能在我的代码中写入。

所以我正在寻找一种类似配置文件的方式来存储和访问它。

目前,我用我所有的 TOKEN 创建了一个 XML 文件并阅读了,但我认为这不是正确的方法。

我正在使用 IDEA,JDK-17,Maven 项目

感谢您的帮助!

您可以查看Keycloak服务器: https://www.keycloak.org/

根据我目前观察到的情况,我相信这个 XML 文件充当配置文件或类似的文件,在运行时管理环境变量。但是,您需要注意,任何敏感值都不应以纯文本形式存储在您的存储库、数据库、容器等中。

一种实用的方法是将加密的敏感值存储在可信赖且安全的位置,并在部署到生产环境之前对其进行解密。

如果您希望将这些令牌加密存储,您可以使用 github encypted-secret feature. Then, before deployment, rebuild this XML using a CI pipeline, and let github handle decryption of values during the build time (See this example). As another example, you can use AWS secret-manager 来加密所有值,然后将这些值注入到您的容器中,同时将您的 docker 容器部署到云服务器.

这种方法的优点包括防止令牌泄漏和通过简单地替换 Gtihub、AWS 等中的值和创建新部署来提供简单的密钥轮换。