【问题标题】:API authentication using private and public keys使用私钥和公钥的 API 身份验证
【发布时间】:2012-10-27 12:22:16
【问题描述】:

我想以与 SSH 类似的方式使用 Web API 在 CLI 中授权用户(在服务器上上传公钥,然后使用私钥进行授权)。有可能吗?

我并不是要生成公钥/私钥par,而是重复使用现有的id_rsa和id_rsa.pub。

您是否知道任何使其变得更容易的软件包(最好是 Ruby on Rails gems?)

@编辑:

具体来说,我想登录网站,上传我的公钥并将其与在线帐户连接,然后可以通过 CLI 接口使用网站的 API(身份验证)。

【问题讨论】:

  • 抱歉,没听懂。这是否意味着您希望用户能够以某种方式使用私钥作为身份验证来使用 Web API?还是您希望用户能够使用私钥作为身份验证来访问 CLI?
  • 我想登录网站,把我的公钥和我的账号关联起来,然后就可以通过cli接口登录网站的api了。
  • @sheerun 你能找到解决方案吗?我正在做类似的事情,但仍然无法找到正确的解决方案。

标签: ruby-on-rails api authentication oauth ssh


【解决方案1】:

您可以使用 openssl 库。至于您想要的更完整的解决方案,我认为它不可用。不过,用这个库来实现应该不会做太多的工作。

http://ruby-doc.org/stdlib-1.9.2/libdoc/openssl/rdoc/OpenSSL/PKey/RSA.html

基本上做这样的事情:

# private_key_str can be in PEM or DER format
OpenSSL::PKey::RSA.new(private_key_str, 'passphrase').public_key

并将其与公钥进行比较。您可以使用 #to_pem 或 #to_der 获取密钥的字符串表示形式,具体取决于您使用的格式(稍微尝试一下)。您也可以使用 rsa 库。

我认为你可以使用

ssh-keygen -e -f id_rsa.pub > pemkey.pub

从 ssh-keygen 的默认格式转换为 PEM。如有必要,您可以在服务器上运行此命令进行转换 - 您必须尝试查看是否正确匹配格式,因为我不确定 OpenSSL::PKey::RSA 是否接受 ssh 的默认格式-keygen。您还可以使 ssh-keygen 从 STDIN 读取并写入 STDOUT,这样您就不需要使用文件来进行转换。

【讨论】:

    猜你喜欢
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    • 2017-11-08
    • 1970-01-01
    • 2015-01-10
    • 2015-08-20
    • 2015-10-20
    相关资源
    最近更新 更多