我应该在哪里存储我的Java应用程序的凭据以访问第三方服务?

时间:2016-12-07 09:35:10

标签: java web-services security java-ee-7

我应该在哪里存储我的Java应用程序的凭据以访问第三方服务?

我的应用程序中的每个用户的凭据不是特定的。它们用于访问我的应用程序正在使用的Web服务。我知道不要硬编码到我的应用程序中,但我在哪里以及如何存储它们?我还假设它们需要加密。

4 个答案:

答案 0 :(得分:2)

.jar文件是存储所有凭据的最佳方式。

  1. 创建将凭据存储为最终字符串
  2. 的界面
  3. 将接口转换为jar文件
  4. 在构建路径中添加该jar文件
  5. 使用凭据实现此接口,并访问存储凭据的String对象。

答案 1 :(得分:1)

  • Db的
  • .properties file
  • 具有常量的配置类

Spring具有很好的@Value注释功能,可以使用给定的键自动从.properties文件(在资源文件夹下)注入值。

我使用它,因为在我的情况下,我在多个应用程序实例中有不同的键值,而db需要更多的复杂性,而且我不会对db进行不必要的查询。

在安全的基础上,如果攻击者可以读取服务器上的文件,那么他就可以轻松读取您的数据库,这样就不会在这里发挥作用。它可以存储在系统的任何文件中。

另一方面,您可以使用

配置类
  

public static final String SECRET_KEY =" someKey"

答案 2 :(得分:0)

在@ Zildyan的回答,评论和对其他答案的引用的基础上进行构建。

存储 的选项有几个:

  • 数据库
  • 属性文件
  • 常数(硬编码)
  • 文件系统(远离应用程序)

至于如何存储:

取决于敏感度。凭证可以以纯文本(低灵敏度)存储,也可以加密(高灵敏度)。

还应注意,使用加密和从源分离凭据的组合,您将限制对凭据的内部访问。

一些例子

  • 以纯文本格式存储的密码可以添加到源控件中,并且可以访问源控件的任何人读取。
  • 任何能够运行代码的人都可以轻松获得带有解密代码的加密密码。
  • 访问服务器的任何人都可以访问存储在服务器上的纯文本文件。
  • 存储在文件系统上的加密文件只能由sys管理员和开发人员可用的解密方法访问。

存储在数据库中以及谁有权访问该数据库也是如此。

答案 3 :(得分:0)

JNDI

Per Wikipedia

  

Java命名和目录接口(JNDI)是用于目录服务的Java API,允许Java软件客户端通过以下方式发现和查找数据和资源(以Java对象的形式)。名称。

您的企业可能已建立了与JNDI兼容的目录服务。您将要求系统管理员为您的特定凭据添加一个条目。

如果您是自我管理者,那么您的Java EE(现在为Jakarta EE)应该内置有与JNDI兼容的服务器。学习配置它,并为您的特定凭据添加条目。

相关问题