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

时间:2013-10-04 17:29:27

标签: passport.js

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

2 个答案:

答案 0 :(得分:58)

如果我理解正确,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则说明护照本地策略:

  

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

答案 1 :(得分:4)

如果您使用Passport Local策略:   - 建立会话,因此您不必为每个请求发送信用证;   - 用户名和密码在"用户名"中提供。和#34;密码"默认情况下标题;

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