小编典典

Java-从配置文件加密/解密用户名和密码

java

我们正忙于为客户开发Java Web服务。有两种可能的选择:

  • 将加密的用户名/密码存储在Web服务客户端上。从配置读取。客户端上的文件,解密并发送。

  • 将加密的用户名/密码存储在Web服务器上。从配置读取。Web服务器上的文件,解密并在Web服务中使用。

Web服务使用用户名/密码来访问第三方应用程序。

客户端已经具有提供此功能的类,但是此方法涉及以明文方式发送用户名/密码(尽管在内联网中)。他们希望存储信息。在Web服务中,但实际上并不想为他们已经拥有的东西付费。(安全性不是一个大考虑因素,因为它仅在其Intranet内)。

因此,我们需要使用Java轻松快捷地进行一些操作。

有什么建议吗?

服务器是Tomkat 5.5。Web服务是Axis2。

  • 我们应该使用什么加密/解密包?
  • 钥匙店呢?
  • 我们应该使用什么配置机制?
  • 这样容易部署吗?

阅读 582

收藏
2020-09-15

共1个答案

小编典典

在Intranet上当然不能证明消除安全性是合理的。对信息造成的大多数损害是内部人员造成的。查看受保护内容的价值,并适当考虑安全性。

听起来好像有一个第三方应用程序,您拥有一个第三方凭据,并且某些客户端在使用第三方应用程序时可以有效地共享此身份。如果是这样,我建议采用以下方法。

请勿在您的Web服务器之外分发第三方密码。

最安全的方法是以交互方式将其提供给Web应用程序。可以是ServletContextListener,它在应用程序启动时提示输入密码,或者是应用程序中的页面,以便管理员可以通过表单输入密码。密码存储在ServletContext中,并用于验证对第三方服务的请求。

安全性方面的降级措施是将​​密码存储在服务器的文件系统上,以便只有运行服务器的用户才能读取该密码。这依赖于服务器的文件系统权限进行保护。

试图在客户端或服务器上存储加密形式的密码只是向后退了一步。尝试用另一个秘密保护一个秘密时,您将陷入无限回归。

此外,客户端应向服务器进行身份验证。如果客户端是交互式的,请让用户输入密码。然后,服务器可以决定是否授权该用户访问第三方服务。如果客户端不是交互式的,那么下一个最佳安全性是使用文件系统权限来保护客户端的密码。

为了保护客户端的凭据,客户端和Web服务器之间的通道应使用SSL保护。在这里,在Intranet上进行操作是有优势的,因为您可以在服务器上使用自签名证书。

如果确实将密码存储在文件中,请自行将它们放在文件中;它使得需要更加谨慎地管理权限更加显着,并且使许多用户编辑该文件并因此看到密码的需求降至最低。

2020-09-15