设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 IT综合资讯 查看内容

选择合适的Node.js认证策略

2014-5-4 12:52| 发布者: joejoe0332| 查看: 2709| 评论: 0|原作者: yxrykds, Garfielt, newjs, 无若, 只能怪小名|来自: oschina

摘要: Node正在兴起!我从2010年就开始玩并使用Node工作,那个时侯我看着它从一个小的个人hack项目成长为一个能够供开发者使用来构建真实、重要及大型应用的全面型构建工具。生态系统型解决方案如雨后春笋般涌现,在助力开 ...

  Node正在兴起!我从2010年就开始玩并使用Node工作,那个时侯我看着它从一个小的个人hack项目成长为一个能够供开发者使用来构建真实、重要及大型应用的全面型构建工具。生态系统型解决方案如雨后春笋般涌现,在助力开发者的同时使生态系统也迅速发展着。但随着它的快速增长也越来越难找到最适合你的解决方案,因为来自谷歌搜索或npm的干扰。



  认证和用户管理绝对是块困难且变化多端的战场。然而,当创建一个实际的Node应用时,这却是第一位需要确认的组件。本指南的目的是给你展现Node中用户管理和认证的全面。

  

  Node中有哪些可用选择?


  目前Node中有几个不同的路径来构建用户管理。它们的无序排列如下:


  • Passport.js / Everyauth

  • 自己的数据库及哈希算法

  • 用户管理即服务


  Passport.js / Everyauth


  PassportJSEveryauth是一个Node处理连接中间件协议的认证中间件。这意味着如果你使用ExpressRestifySails等框架,你就可以很容易地将其中一个认证方案(或策略)直接插入你的应用中。Everyauth配合其嵌入策略,就像通行证时可以选择使用的策略一样。一些开发者的经常配合通行证使用的策略是FacebookGoogle的,但这也包括诸如本地用户名/密码认证到一系列的OpenID、OAuth提供器等的一切,甚至是一个Stormpath通行策略。


  尽管 Everyauth 和 Passport 都建立在同一个中间件框架之上,他们有自己的一套利弊。Passport 更加灵活和模块化的,但 Everyauth 提供了对路由和登录/注册有所帮助的额外的功能。对于很多 Node 开发员,Passport 也是首选的,因为它不使用承诺。 


  由于 Passport 和 Everyauth 都是建立在 Connect 上的,他们都将帮助你实现会话管理,其中包括:  


  • 序列化经过身份验证的用户

  • 会话管理

  • 注销用户 


  此外,它们非常适用于简单和容易的用户验证,但由于设计上的局限,并不适用于属于更广泛的用户管理需求。你还是需要设计,实施和维护其他用户验证需要的基础设施。

  

  例如,如果你使用的是本地通行证(针对自己数据库的用户名密码验证策略),Passport 没有处理用户的注册及账户的验证。你需要使用数据库模块来进行身份鉴定,创建账户,追踪验证状态,创建验证令牌,发送邮件,以及验证账户。这意味着开发者会需要担心 URL 的安全性,移除过期的令牌,以及其它的安全约束(如数据库中密码的正确散列)。


  自己的数据库及哈希算法


  DIY 的方法不依赖于任何中间件。选择自己的栈,存储用户所用的数据库(可能是 PostgresSQL 或 MongoDB),以及一个用来生成密码散列的哈希算法(可能是 bcrypt 或 scrypt)。在 npm 中搜索 bcrypt 或 scrypt 会导致不少模块在质量上的变化,每个模块都有自己的依赖集合。如果你是 Windows 开发者,请特别注意 – 我们推荐 Javascript 原生实现的 bcrypt 。


  选定栈后,你需要增加用户管理和身份验证。从历史上看,这种方式极其常见,但是与其它方式相比,它冗长乏味、易于出错、需要更多的维护。


  你需要增加/解决:


  • 账户创建

    • 创建用户模式来保持用户数据

    • 创建账户及存储那些使用 bcrypt / scrypt 盐化(增加随机字串)、散列过的密码

    • 发送带有账户验证令牌的邮件

  • 账户身份验证

    • 验证用户身份(比较散列值)

  • 账户管理

    • 生成 / 失效令牌

    • 密码复位的工作流

    • 基于角色的访问/许可

  • ID 与 社会服务提供商的集成

  • 系统安全

    • 保护数据库以免于未授权访问

    • 保护操作系统以免于未授权访问

  • 数据备份



酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部