Node.js http authentification basique

Est-il possible de faire authentification de base dans Node.js comme dans Apache?

Http://doc.norang.ca/apache-basic-auth.html

Je sais que si vous utilisez Express ou Connect, je peux ajouter des fonctionnalités de middleware et faire une vérification de l'utilisateur, mais j'essaie de restreindre toute la zone (je n'ai pas besoin d'authentifier les utilisateurs d'une base de données à peine quelques utilisateurs définis) J'utilise Ubuntu.

Https://github.com/kaero/node-http-digest

C'est quelque chose que je peux faire, mais je ne suis pas sûr de savoir si "exposer" ou écrire directement l'utilisateur et le mot de passe dans le code est suffisamment sécurisé.

Merci beaucoup.

Le passeport fournit un mécanisme propre pour implémenter l'authentification de base. Je l'utilise dans mon application Node.js Express pour protéger mon UI basée sur Angularjs ainsi que mon API RESTful. Pour obtenir un passeport en cours d'exécution dans votre application, procédez comme suit:

  • Npm installer le passeport

  • Npm install passport-http (contient l'objet "BasicStrategy" pour l'authentification de base)

  • Ouvrez votre application.js et ajoutez ce qui suit:

    var passport = require('passport') var BasicStrategy = require('passport-http').BasicStrategy passport.use(new BasicStrategy( function(username, password, done) { if (username.valueOf() === 'yourusername' && password.valueOf() === 'yourpassword') return done(null, true); else return done(null, false); } )); // Express-specific configuration section // *IMPORTANT* // Note the order of WHERE passport is initialized // in the configure section--it will throw an error // if app.use(passport.initialize()) is called after // app.use(app.router) app.configure(function(){ app.use(express.cookieParser()); app.use(express.session({secret:'123abc',key:'express.sid'})); app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); app.set('view options', { layout: false }); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(express.static(__dirname + '/public')); app.use(passport.initialize()); app.use(app.router); app.use(logger); }); // Routes app.get('/', passport.authenticate('basic', { session: false }), routes.index); app.get('/partials/:name', routes.partials); // JSON API app.get('/api/posts', passport.authenticate('basic', { session: false }), api.posts); app.get('/api/post/:id', passport.authenticate('basic', { session: false }), api.post) // --Repeat for every API call you want to protect with basic auth-- app.get('*', passport.authenticate('basic', { session: false }), routes.index); 

Mettez ceci

 app.use(express.basicAuth(function(user, pass) { return user === 'test' && pass === 'test'; })); 

Avant la ligne à

 app.use(app.router); 

Pour protéger toutes les routes avec HTTP authentification basique

Consultez les bibliothèques d'authentification utilisateur pour node.js?

Il ne répond pas à votre question à 100% – mais peut-être aide-t-il.

Je pense que le bon choix pourrait être le module http-auth

 // Authentication module. var auth = require('http-auth'); var basic = auth.basic({ realm: "Simon Area.", file: __dirname + "/../data/users.htpasswd" // gevorg:gpass, Sarah:testpass ... }); // Application setup. var app = express(); app.use(auth.connect(basic)); // Setup route. app.get('/', function(req, res){ res.send("Hello from express - " + req.user + "!"); });