【问题标题】:Persisting web service passwords持久化 Web 服务密码
【发布时间】:2010-12-18 08:32:14
【问题描述】:

我不是安全人员,因此非常感谢您提供任何帮助。

我有大量第三方现场设备,它们具有可以使用 ssl 跨 xml-rpc 调用的远程方法。对于每个方法调用,用户名和密码必须与任何其他方法参数一起以纯文本形式作为参数传输。我无法控制这些设备或其实施。

我目前正在编写一个 Web 应用程序,用户可以登录该应用程序然后访问其中一些现场设备。用户不需要知道他们正在连接什么设备,他们只需要数据。因此,我需要将每个设备的用户名和密码保存在数据库中,以便在需要进行 rpc 调用时检索它们。

如何加密我的设备服务密码,以便在需要拨打电话时对其进行解密?需要拨打电话时如何解密密码?

我在应用程序中使用 Java 和 Spring。

注意,我不是在问如何保存用户的登录密码。

【问题讨论】:

  • 有趣的问题 :) 每个用户每个设备都有自己的用户 ID\密码,每个设备是否有“系统定义的”用户 ID\密码,或者是组合?
  • 每个设备都有一个用户名-密码对,无论用户是否登录到 Web 应用程序,每个 xml-rpc 调用都将使用该对。

标签: java encryption passwords web-services


【解决方案1】:

如果我有这个权利,那么每个现场设备只有一个用户名/密码(尽管每个都不同,并且有很多现场设备)。

构建可访问所有设备密码的安全代理服务。设备密码可以使用代理服务的公钥加密存储。您的网络应用程序向代理服务提供用户密钥(假设满意)代表他们与现场设备对话。 CryptoApi 或其包装器之一应该是您所需要的。

您不对数字发表评论,但鉴于代理将是无状态的,它应该可以扩展。

【讨论】:

    【解决方案2】:

    我们用this code解决了类似的问题。

    在加密其他服务的用户名和密码时,您将使用用户登录 Web 应用程序时使用的密码作为密钥。

    【讨论】:

    • 每个服务都有一个用户名/密码对。用户和他们将访问的服务之间存在多对多的关系。所以我不能使用一个用户的密码来加密服务用户名和密码,因为另一个用户很可能需要访问该服务。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多