NodeJS管理后端身份验证策略

时间:2013-02-17 22:51:48

标签: node.js express

我为NodeJS/Express3/MongoDB的客户构建了一个简单的电子商务网站,我对于为网站后端实施什么样的身份验证策略存有疑问。

我对authentication/authorization几乎没有任何了解,而且我有点失落,所以如果你帮我清除一点雾,我会很感激。

只有一个人,所有者才能访问它。我过去实现了 HTTP简单身份验证,但只要我知道,凭据就会以纯文本形式发送。我需要实现HTTPS,但我试图避免这种情况。

我虽然关于OAuth2,但单次登录似乎有些过分。

也许Digest符合我的需要。只要我知道,它就不会以纯文本形式发送凭据。

我还发现这个库看起来非常好:

http://passportjs.org/

您对此方案有何建议?

2 个答案:

答案 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);