【问题标题】:REST / Web based authentication-as-a-service a possibility?基于 REST / Web 的身份验证即服务有可能吗?
【发布时间】:2013-07-10 22:18:11
【问题描述】:

我使用Express 开发了一个基于REST 的服务,并最初开始自己实施身份验证。一个简单的用户名/密码验证,其中

  • 密码使用 BCrypt 加密
  • 用户信息 + 哈希密码存储在 mongoDB 中
  • 密码验证检查已完成。
  • 生成/验证身份验证令牌(有限 TTL)

我对 Node.JS 有一些了解,但还不足以让我对推出自己的身份验证(登录/注册)机制感到满意。

出于这个原因,我想用其他东西替换我的内部机制。

经过验证、可扩展、可插拔且易于使用。

鉴于基于 Node.JS 的安全网站/REST API 的数量,我确信人们/公司必须提供开箱即用的解决方案,这些解决方案可以让服务实施者快速启动并运行,而不必担心安全/用户方面。

我正在寻找 even higher level of abstraction,而不是像 passporteveryauth 这样的库。提供开箱即用功能的东西,能够满足我的要求,包括:

  • 提供登录页面/注册页面/个人资料页面
  • 不同的身份验证模块(google、facebook、github、....)
  • 在数据存储 (mongoDB) 中存储用户信息(如果需要 + 凭据)。
  • 记住我
  • 忘记密码/重设密码

所以这里的问题是:

  • 是否有类似out-of-the-box 的解决方案提供比护照/everyauth/...更高的抽象级别?
  • 如果有的话,您会推荐其中一些开箱即用的解决方案吗?
  • 我是否应该忘记outsourcing my user authentication 的概念并开始查看passport 和everyauth 并开始使用这些库实现我的要求?
  • 是否可以专注于我的业务逻辑,而不用担心有关用户身份验证的任何方面(编写登录/注册页面、实现忘记密码/重置密码流程、将用户信息存储在数据库中)。

【问题讨论】:

  • 你有没有同时得到答案?

标签: node.js security rest express authentication


【解决方案1】:

服务 API 应该在很大程度上独立于您的身份验证机制,因此我建议在简单的密码保护文件夹或类似的文件夹后面启动它。在我看来,最好确保您的 API 可以正常工作并获得关注。这意味着这将是一个更长期的项目。没有什么比开箱即用地专注于痛苦的事情更能扼杀一个项目的了。

至于使用什么服务?很好地设置安全性并非易事。所以对于一个小型的启动项目,与其他服务集成可能更具成本效益。可以看看Mozilla Persona。这是built on Node,非常简单。

如果您确实尝试自行开发,请获得一些外部专业知识,并且不要做一些愚蠢的事情,例如使用像 SHA1 这样的散列算法来存储密码。而是使用bcrypt 之类的东西。然后还有其他事情,例如不要将服务器日志存储在它们创建的服务器上。将所有日志通过管道传输到其他地方,这样如果发生入侵,您就可以通过取证追踪追溯发生的事情。

【讨论】:

  • API 需要保护。我无法在非安全 API 上“获得关注”。如果由于安全问题而导致用户数据被盗/被操纵,除了牵引力之外,我还会遇到其他问题。我知道基础知识(散列+加盐,使用 SSL,....)。您对 Mozilla Persona 有什么体验?
  • 我在 Mozilla 工作,所以我的观点会带有偏见。它仍在开发中,但目前已大量用于生产。
【解决方案2】:

我猜你可以使用 https://stormpath.com/ 。我自己也在寻找免费的替代品..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-12
    • 1970-01-01
    • 2013-06-22
    • 2011-08-16
    • 2011-02-04
    • 1970-01-01
    • 2010-11-17
    • 1970-01-01
    相关资源
    最近更新 更多