通过命令行Ruby客户端对用户密码进行加密的最佳方法是使用Rails应用程序进行身份验证

通过命令行Ruby客户端对用户密码进行加密的最佳方法是使用Rails应用程序进行身份验证,ruby,authentication,encryption,devise,ruby-on-rails-3.2,Ruby,Authentication,Encryption,Devise,Ruby On Rails 3.2,背景:我们目前有一个Rails应用程序,它使用Desive&LDAP进行身份验证。用户只需提供其用户和密码,即可通过浏览器登录并建立会话。因为我们使用LDAP,所以不需要(或不想)在Rails应用程序中存储密码。这很有效。我们还有一个Ruby命令行实用程序,功能有限,主要用于后端自动化,但用户可以使用客户端CLI在我们的应用程序中执行某些操作。现在,我们想将身份验证添加到我们的Ruby客户端(在Windows和Linux上受支持) 那么,将用户密码发送到Rails应用程序进行身份验证的最佳方式是

背景:我们目前有一个Rails应用程序,它使用Desive&LDAP进行身份验证。用户只需提供其用户和密码,即可通过浏览器登录并建立会话。因为我们使用LDAP,所以不需要(或不想)在Rails应用程序中存储密码。这很有效。我们还有一个Ruby命令行实用程序,功能有限,主要用于后端自动化,但用户可以使用客户端CLI在我们的应用程序中执行某些操作。现在,我们想将身份验证添加到我们的Ruby客户端(在Windows和Linux上受支持)

那么,将用户密码发送到Rails应用程序进行身份验证的最佳方式是什么呢?问题是我们不希望用户在命令行上以明文形式输入密码(出于各种原因)

提案: 我正在考虑使用openssl在我们的Ruby客户端中创建一个实用程序,允许用户在本地加密文件中存储和加密他们的密码(可能还有其他配置信息)。然后,我们的Ruby客户端就可以在所有HTTPS调用中向Rails应用程序发送这个加密的配置文件。在Rails端,我们可以在允许请求的操作之前解密文件、提取密码并通过Desive LDAP对用户进行身份验证

我能想到这种设计的一些缺陷,并好奇是否有人有更好的解决方案或建议?


注意:这是一个内部工具,因此我们不需要对安全性抱有疑虑,同时我们不希望任何人获得其他人的公司密码。理想情况下,此解决方案还必须防止我们的任何应用程序开发人员也能够访问用户密码。

我知道这个问题已经很老了,但答案可能对其他人有用

我认为openssl是你最好的选择。您不必自己创建密码存储实用程序。如果需要,你可以扩展它

gem中已经有一个名为keybox的工具(由Jeremy Hinegardner创建)。
从rubyforge.org(应用程序主页):

  • Keybox提供了两个命令行应用程序:Keybox和kpg

    • keybox:一个纯ruby命令行密码存储应用程序,使用ruby附带的OpenSSL库进行加密

    • kpg:自动密码生成器(apg)的纯ruby实现 节目。它试图实现“apg”的所有功能, 但它并不完全兼容


您可以在中找到它,文档位于

那么,您是在询问传输还是如何在客户端存储凭据?什么平台?我们的客户端在Windows和Linux上受支持。如上所述,我很好奇我目前提出的使用openssl将密码存储在加密文件中的建议是否是最好的方法。如果用户只需要发送文件(可能就在磁盘上的某个地方),那么我会感到困惑。当然用户不能从文件中提取密码,但他们不需要,因为rails应用程序会为他们提取密码