我应该在哪里存储我的Java应用程序的凭据以访问第三方服务?
我的应用程序中的每个用户的凭据不是特定的。它们用于访问我的应用程序正在使用的Web服务。我知道不要硬编码到我的应用程序中,但我在哪里以及如何存储它们?我还假设它们需要加密。
答案 0 :(得分:2)
.jar文件是存储所有凭据的最佳方式。
答案 1 :(得分:1)
Spring具有很好的@Value注释功能,可以使用给定的键自动从.properties文件(在资源文件夹下)注入值。
我使用它,因为在我的情况下,我在多个应用程序实例中有不同的键值,而db需要更多的复杂性,而且我不会对db进行不必要的查询。
在安全的基础上,如果攻击者可以读取服务器上的文件,那么他就可以轻松读取您的数据库,这样就不会在这里发挥作用。它可以存储在系统的任何文件中。
另一方面,您可以使用
配置类public static final String SECRET_KEY =" someKey"
答案 2 :(得分:0)
在@ Zildyan的回答,评论和对其他答案的引用的基础上进行构建。
存储 的选项有几个:
至于如何存储:
取决于敏感度。凭证可以以纯文本(低灵敏度)存储,也可以加密(高灵敏度)。
还应注意,使用加密和从源分离凭据的组合,您将限制对凭据的内部访问。
一些例子
存储在数据库中以及谁有权访问该数据库也是如此。
答案 3 :(得分:0)
Java命名和目录接口(JNDI)是用于目录服务的Java API,允许Java软件客户端通过以下方式发现和查找数据和资源(以Java对象的形式)。名称。
您的企业可能已建立了与JNDI兼容的目录服务。您将要求系统管理员为您的特定凭据添加一个条目。
如果您是自我管理者,那么您的Java EE(现在为Jakarta EE)应该内置有与JNDI兼容的服务器。学习配置它,并为您的特定凭据添加条目。