我为NodeJS/Express3/MongoDB
的客户构建了一个简单的电子商务网站,我对于为网站后端实施什么样的身份验证策略存有疑问。
我对authentication/authorization
几乎没有任何了解,而且我有点失落,所以如果你帮我清除一点雾,我会很感激。
只有一个人,所有者才能访问它。我过去实现了 HTTP简单身份验证,但只要我知道,凭据就会以纯文本形式发送。我需要实现HTTPS,但我试图避免这种情况。
我虽然关于OAuth2
,但单次登录似乎有些过分。
也许Digest符合我的需要。只要我知道,它就不会以纯文本形式发送凭据。
我还发现这个库看起来非常好:
http://passportjs.org/
您对此方案有何建议?
答案 0 :(得分:0)
我认为使用本地策略的Passport已经足够了 使用HTTPS总是好的,在Node.js中并不难。
如果你想更深入,请阅读The Web Application Hacker's Handbook。
答案 1 :(得分:0)
我建议使用HTTPS进行HTTP Basic或Digest身份验证,您可以使用http-auth模块执行此操作。
// HTTPS module
var https = require('https');
// File system module.
var fs = require('fs');
// Authentication module.
var auth = require('http-auth');
var basic = auth.basic({
realm: "Simon Area.",
file: __dirname + "/../data/users.htpasswd" // gevorg:gpass, Sarah:testpass ...
});
// HTTPS server options.
var options = {
key: fs.readFileSync(__dirname + "/../data/server.key"),
cert: fs.readFileSync(__dirname + "/../data/server.crt")
};
// Starting server.
https.createServer(basic, options, function (req, res) {
res.end("Welcome to private area - " + req.user + "!");
}).listen(1337);