【问题标题】:Node.js authentication without passport: are json web tokens reliable?没有护照的 Node.js 身份验证:json Web 令牌可靠吗?
【发布时间】:2015-07-20 16:04:59
【问题描述】:

我正在使用 MEAN 堆栈并希望确保某些路由具有经过身份验证的用户。我一直在阅读 JSON Web 令牌。这似乎是合理的。

在我投入更多时间之前,我想问一下是否有其他人使用它,以及到目前为止他们是否发现了任何重大缺陷。除了护照,还有其他流行的替代品吗?

【问题讨论】:

    标签: node.js authentication mean-stack json-web-token


    【解决方案1】:

    JSON Web 令牌有几个缺陷,如果处理得当,可以使该方法对执行授权非常有用:

    • 客户端仍需要将用户凭据传输到身份验证服务器,这意味着使用安全传输至关重要
    • 如果将敏感信息放入令牌中,则该信息应由客户端加密并通过安全传输方式发送
    • 根据您构建令牌的方式以及与谁共享令牌,令牌应该有一个有限的生命周期,以防止其他人在令牌生成后对其进行破坏,并可能将伪造的数据发送到服务器

    除了passport 之外,肯定还有其他基于 cookie 的身份验证方法,但我不知道有什么方法可以很好地集成和普及,但我相信您可能会找到更有效的方法。还有其他基于 cookie 的方案示例,您可以实施这些示例,例如来自 SO 的 auto-login scheme

    如果您想花时间学习如何实施 JWT,那绝对值得。如果您尝试评估是否需要使用 JWT,一个好的经验法则是问自己是否将拥有多个身份验证服务器,您是否需要授权跨多个不同域的客户端以及您是否需要客户端具有无状态/临时授权令牌。

    【讨论】:

    • 谢谢。我正在阅读您提供的链接,让我质疑一切的部分在这里:“StackAuth 检查 localStorage 的会话,如果是,则将其发送给自己。”。恶意个人是否也可以复制此本地存储会话并在他们自己的客户端浏览器中使用它以使用原始用户凭据登录其他站点?
    • 是的,但这也可能发生在存储在安全 cookie 中的数据上。如果有人可以注入他们的自定义 JS 代码并将其分发给其他客户端,那么他们将拥有与您的应用程序代码相同的访问级别,可能允许他们将安全数据泄漏到其他地方或代表用户执行操作。
    • 我明白了。我可以做些什么来消除此类行为并识别假冒行为?是否有任何其他形式的身份验证不附带此漏洞?
    • Cookie 是一种存储机制,而不是身份验证机制。 Cookie 可以非常安全地用作存储机制,尤其是如果您在 cookie 上使用 HTTPS-only 标志。您存储在 cookie (JWT) 中的是您的身份验证机制,并且作为单独的关注点,诸如令牌应该使用多长时间以及需要为该令牌交换什么(用户名和密码)等问题。我已经在我的博文中详细阐述了这些问题:Token Based Authentication for Single Page Apps (SPAs)
    • @robertjd cookie 是身份验证机制的一部分,只要它们用于传输可用于通过安全设备唯一标识您的授权的有效负载。
    猜你喜欢
    • 2013-06-28
    • 2019-05-21
    • 1970-01-01
    • 2017-02-17
    • 1970-01-01
    • 2014-06-22
    • 2018-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多