【问题标题】:ssh based authentication in expressjsexpressjs中基于ssh的身份验证
【发布时间】:2014-06-08 22:16:37
【问题描述】:

我目前正在使用带有 node.js 的 expressjs 作为我网站的休息服务器。目前用户可以登录我的网站并通过 ui 开始一些操作。他们想要自动化这些东西,我正在寻找实现这一目标的方法。我能想到的一些方法是:

  1. 创建一个新请求,该请求可以将登录凭据作为 reuest 参数的一部分并执行所需的操作。我的用户必须将他们的密码保存为自动化的痛苦文本,这对我来说似乎不太好。

  2. 使用 ssh 登录类似于 bitbucket/github 获取我们的公共 ssh 密钥并允许执行 codepush 而无需每次都写入密码。我如何实现这种设置。我的用户希望每次在测试机中部署时都执行。所以他们会把我的脚本放在服务器重启脚本中。

如果我必须添加新的基于 ssh 的身份验证,是否有任何 npm 模块可以帮助我实现?

我正在使用mean.io 样板代码,目前登录是基于他们的默认登录协议,我在其中保存哈希密码并在登录时进行比较。

【问题讨论】:

    标签: node.js express ssh


    【解决方案1】:

    我认为处理公私密钥对可能比它的价值更麻烦。也许你可以选择第三种选择:

    允许用户从您的网络界面生成 API 密钥。密钥将是“长”随机生成的字符串(GitHub 使用 40 个字符长的十六进制字符串作为其密钥)。它们可用于发出 API 请求以代替用户名-密码对中的密码。为提高安全性,允许用户将密钥的使用限制在某个 IP(范围)内。

    另外,如果您的应用程序尚未通过 HTTPS 提供服务,请确保它。

    示例流程:

    1. 用户 tim 在您的网站 (aisjd8auasdjsd80j43j) 上生成一个随机 API 密钥。
    2. tim 想要向您的 API 发出请求。在请求中,tim 设置了一个授权标头:

      GET /api/v1/list-all HTTP/1.1
      Host: example.com
      X-API-Auth: tim:aisjd8auasdjsd80j43j
      ...
      
    3. 您的 API 会验证 X-API-Auth 标头,检查 tim 是否拥有给定的 API 密钥。
    4. 您的 API 成功返回请求的信息。

    另外,使用 HTTP basic authentication 代替自定义的 X-API-Auth 标头可能值得,就像我在上面的示例中所做的那样。我相信在 curl 等命令行工具中发出 HTTP 基本身份验证请求会稍微容易一些,而不是设置自定义标头。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-18
      • 2015-07-12
      • 1970-01-01
      • 2021-01-25
      • 1970-01-01
      • 2015-08-12
      • 2020-10-08
      • 1970-01-01
      相关资源
      最近更新 更多