护照中的本地基本和摘要策略有何不同

Rit*_*tta 34 passport.js

我理解Passport.js的基本身份验证和摘要身份验证之间的区别,但本地策略与Basic或Digest之间有什么区别?在这三个中,您输入用户名和密码.Basic策略是一种用户和密码身份验证吗?请澄清.

Gle*_*lle 59

如果我理解正确,Passport.js中的Local,Basic和Digest策略之间的差异是微妙但重要的.这是破败的:

本地(护照本地)

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

基本(护照-http)

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

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

摘要(护照-http)

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

这是一篇关于Basic vs. Digest:如何验证API的好文章

注意:所有三种策略都使会话支持可选.两个passport-http策略允许您设置会话标志,而Passport 文档说明这一点,关于护照本地策略:

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

  • 基本策略使用`authentication`标头进行身份验证,请参阅https://github.com/jaredhanson/passport-http/blob/master/lib/passport-http/strategies/basic.js#L68 (3认同)
  • "基本策略是与架构无状态的API端点一起使用" - 无国籍是什么意思?你能举一些例子吗?如果我理解正确,那么本地策略就是"如果你已经支持用户会话,例如为了保存每个会话的临时变量,那么cookie已经识别了会话,每次发送用户名和密码都没有意义". (2认同)
  • @Vadim 你的意思是“授权”标头 (2认同)