【发布时间】:2012-11-26 09:36:34
【问题描述】:
场景:
- Web 应用程序 (RoR 3.2) 需要与远程 Web 服务(SOAP,使用 Savon gem)通信。
- Web 服务需要用户名和密码。
- 通信是 SOAP,流量是通过 VPN(SOAP 没有 SSL)。
- 我需要存储远程 Web 服务管理员给我的密码。
- Web 服务管理员要求我以安全的方式存储密码。
- 当我的网络服务器调用网络服务时,我需要使用明文原始密码。
- Bcrypt 是存储密码的最佳方式,但它是“一种方式”。
- 我无法发送加密密码,我需要一种解密方法才能将其发送到 Web 服务。
这似乎是一个“鸡与蛋”的问题。
有没有办法安全地存储密码并能够解密它以用于自动化服务?
有什么提示吗?
【问题讨论】:
-
远程服务是否使用OAuth?那是你最好的选择。如果没有,看看这个问题:stackoverflow.com/questions/8036233/…
-
很遗憾没有 OAuth。我正在考虑使用 ssh 密钥来加密密码,并使用来自 devise 的散列密码作为密钥密码。我从 zenTourist (distributed-frostbite.blogspot.it/2010/06/…) 借用了使用 ssh 密钥的想法
标签: ruby-on-rails web-services soap bcrypt savon