3

我正在用 Java 编写一个应用程序,它需要在调用该服务上的方法之前登录到远程 SOAP 服务 (JIRA)。

我已经查看了如何执行此操作的示例,例如http://www.j-tricks.com/1/post/2010/8/jira-soap-client.html,但是我担心我需要把某个时刻在内存中的密码。

我读过我应该将密码存储为 char[] 但我仍然担心将密码存储在明文中。

我应该如何存储客户端用于登录 SOAP 服务的密码?我应该如何阅读它并将其传递给 JIRA?

编辑 此应用程序将使用 Spring,因此密码可能存储在 bean 配置文件中而不是代码中。

4

2 回答 2

0

这是我最终决定的。

首先,一些澄清。

  • 密码被加密并存储在数据库中。
  • 密码是静态填充的(由 DBA)。
  • 这是加密和解密的练习,因此不适用散列算法,例如 MD5。

我研究了用 SQL 加密和用 Java 解密的方法,但没有一个特别好。因此,我决定采用以下方法。

  • 当 DBA 填充密码时,他们在输入密码(例如插入 creds(user,password) 值 ('bob',encrypt('password')) 时运行 DBMS 特定的加密方法(例如 MySQL 的 encrypt);
  • 检索密码的SQL,作为属性传递给spring应用程序,包括解密(例如,从凭据中选择用户,解密(密码))。

除此之外,这是一个用户管理和锁定数据库的练习。例如,只有某些人 (DBA) 获得完全访问权限,而应用程序使用只读用户。

希望这对将来的其他人有所帮助。

于 2012-10-23T08:10:07.037 回答
0

SOAP 登录方法返回一个可用于会话的字符串令牌,因此无需在使用后将密码存储在内存中。但我认为你在谈论长期使用。应用程序通常会有一个配置页面以允许设置更永久的身份验证,然后每次重新配置连接时都需要输入密码。

于 2012-09-20T17:43:31.413 回答