基于REST / Web的身份验证即服务是否可能?

时间:2013-07-10 22:18:12

标签: node.js security rest express authentication

我使用REST开发了基于Express的服务,并且最初开始自己实施身份验证。

的简单用户名/密码验证
  • 密码使用BCrypt加密
  • 用户信息+散列密码存储在mongoDB中
  • 完成密码验证检查。
  • 生成/验证身份验证令牌(有限的TTL)

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

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

经过验证,可扩展,可插拔且易于使用的东西。

鉴于基于Node.JS的安全网站/ REST API的数量,我确信人们/公司必须提供开箱即用的解决方案,以便能够快速启动和运行服务实现者,无需担心安全性/用户方面。

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

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

所以这里的问题是:

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

2 个答案:

答案 0 :(得分:1)

服务API应该在很大程度上独立于您的身份验证机制,因此我建议在一个简单的受密码保护的文件夹后面启动它。在我看来,最好确保你的API工作,并可以获得牵引力。这意味着它将成为一个长期项目。没有什么能比开箱即用的重点放在痛苦的东西上更快地杀死一个项目。

至于使用什么服务?设置安全性非常重要。因此,对于一个小型启动项目,与其他服务集成可能更具成本效益。可能会看看Mozilla Persona。这是built on Node而且很直接。

如果您确实尝试自己获得一些外部专业知识,并且不要做愚蠢的事情,比如使用像SHA1这样的散列算法来存储密码。而是使用bcrypt之类的东西。然后还有其他一些事情,例如,不要在他们创建的服务器上存储服务器日志。将其他所有日志排除在其他地方,以便在有入侵的情况下,您可以将取证记录回原点。

答案 1 :(得分:0)

I guess you could use https://stormpath.com/ . I'm looking for a free alternative myself..