使用本地护照和PAM模块进行身份验证

时间:2015-12-02 05:06:37

标签: node.js express passport.js passport-local

所以我使用PAM在我的快递应用中验证用户身份。但是,我无法找到正确的文档和教程,了解如何实现它以及配置会话。

这是PAM的npm模块,名为exit(0);

authenticate-pam

关于我将如何编写本文的问题仍然存在,我知道我也希望实现会话,所以我也担心如何将其与PAM模块集成。以下是我在var pam = require('authenticate-pam'); pam.authenticate('username', 'password', function(err) { if(err) { console.log(err); } else { console.log("Authenticated!"); } }); 文件中放置内容的草稿。

routes/index.js

就我而言,我已经获得了认证。至于会话,这是我在我的应用程序的var express = require('express'); var passport = require('passport'); var router = express.Router(); var pam = require('authenticate-pam'); // GET Commands ========== router.get('/', function(req, res, next) { res.render('login', { title: 'Login', layout: 'base-layouts/login-layout.hbs'}); }); // POST Commands ========== router.post('/', function (req, res) { var usernameCaptured = req.body.username; var passwordCaputured = req.body.password; console.log('Username: ' + usernameCaptured); // For debuging console.log('Password: ' + passwordCaputured); // For debuging pam.authenticate(usernameCaptured, passwordCaptured, function(err) { if(err) { console.log("Not Authenticated"); //Send to login page with error. } else { console.log("Authenticated!"); res.render('dashboard', { title: 'Dashboard', layout: 'base-layouts/dashboard-layout.hbs'}); } }); }); module.exports = router; (主文件)中放置的内容。

app.js

看起来很简单,但是没有很多教程,很难说出我可以使用哪些教程。他们中的一些人甚至不解释他们在做什么。希望有人可以帮助我。

1 个答案:

答案 0 :(得分:0)

试试这个......如果你得到一个SIGTERM,你必须以root身份运行。不确定解决方案是什么。

var passport            = require('passport');
var Strategy            = require('passport-local').Strategy;
var pam                 = require('authenticate-pam');

module.exports = function(passport){

  // =====================================
  // Custom Strategy =====================
  // =====================================
  passport.use('pam', new Strategy({
      usernameField : 'username',
      passwordField : 'password',
      passReqToCallback : true
    },
    function(req, username, password, done) {
      pam.authenticate(username, password, function(err) {
        if(err) {
          done(null, false, req.flash('loginMessage', err));
        }else{
          done(null, username);
        }
      }, {serviceName: 'login', remoteHost: 'localhost'});
    })
  );

  // =====================================
  // PASSPORT SERIALIZE ==================
  // =====================================
  passport.serializeUser(function(username, done) {
        done(null, username);
  });

  // used to deserialize the user
  passport.deserializeUser(function(username, done) {
        done(null, username);
  });

};