【问题标题】:What are the differences between local Basic and Digest strategy in passportjspassportjs中本地Basic和Digest策略有什么区别
【发布时间】:2016-11-18 05:21:45
【问题描述】:

我了解 Passport.js 的 Basic 和 Digest 认证的区别,但是本地策略和 Basic 或 Digest 的区别是什么?在所有三个中,您都输入用户名和密码。基本策略是一种用户和密码身份验证吗?请澄清。

【问题讨论】:

    标签: passport.js


    【解决方案1】:

    如果我理解正确的话,Passport.js 中的 Local、Basic 和 Digest 策略之间的区别是微妙但重要的。这是纲要:

    本地 (passport-local)

    Passport 的本地策略是一个简单的用户名和密码认证方案。它从用户名(或其他标识符)中找到给定用户的密码并检查它们是否匹配。本地策略与其他两种策略的主要区别在于它使用持久登录会话。此策略应在 SSL/TLS 上使用。

    基本 (passport-http)

    Passport 实施的基本策略看起来与本地策略几乎相同,但有一个细微差别。基本策略是与架构无状态的 API 端点一起使用。因此,会话不需要,但可以使用。此策略还应使用 SSL/TLS。会话标志可以这样设置:

    app.get('/private', passport.authenticate('basic', { session: false }), function(req, res) {
      res.json(req.user);
    });
    

    摘要 (passport-http)

    摘要策略与其他两种策略略有不同,因为它使用特殊的挑战-响应范例以避免以明文形式发送密码。当 SSL/TLS 不可用时,此策略将是一个很好的解决方案。

    这是一篇关于基本与摘要的好文章:How to Authenticate APIs

    注意:所有三种策略都使会话支持可选。两种 passport-http 策略允许您设置会话标志,而 Passport docs 这么说,关于 passport-local 策略:

    请注意,启用会话支持是完全可选的,但建议大多数应用程序使用它。

    【讨论】:

    • “基本策略是与架构无状态的 API 端点一起使用”——无状态是什么意思?你能举一些例子吗?如果我理解正确,本地策略就是“如果您已经支持用户会话,例如为每个会话保存临时变量,那么 cookie 已经识别会话并且每次发送用户名和密码是没有意义的"。
    • 基本策略使用authentication标头进行身份验证见github.com/jaredhanson/passport-http/blob/master/lib/…
    • @Vadim authorization 你的意思是标题
    【解决方案2】:

    如果您使用 Passport Local 策略: - 会话已建立,因此您不必针对每个请求发送凭据; - 默认情况下,用户名和密码在“用户名”和“密码”标题中提供;

    如果您使用 Passport Basic/Digest 策略: - 未使用会话,因此您必须在每次 API 调用时提供凭据; - 用户名和密码/哈希包含在“授权”标题中;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-22
      • 2013-12-01
      相关资源
      最近更新 更多