Linux上node.js应用程序中的OS用户身份验证

时间:2018-05-29 14:13:19

标签: node.js authentication

我们公司目前有一个Linux守护程序,它使用操作系统用户/密码和特定于应用程序的用户/密码来处理身份验证。我正在重新实现此守护程序作为node.js Web服务。

如何检查节点应用中的操作系统级凭据?(我知道有些人会说我们根本不应该使用操作系统身份验证,但这是一个很难的要求我做的产品。)

1 个答案:

答案 0 :(得分:1)

完全可能,但您应该使用LDAP或Kerberos等授权服务来实现此目标。

将客户端功能添加到您的应用程序中。

Joyent LDAP客户端(ldapjs)

var ldap = require('ldapjs');
var client = ldap.createClient({
  url: 'ldap://127.0.0.1:1389'
});

文档:ldapjs

Passport Kerberos(护照 - kerberos)

var REALM="EXAMPLE.COM"

passport.use(new KerberosStrategy(
  function(username, done) {
    User.findOne({ username: username }, function (err, user) {
      if (err) { return done(err); }
      if (!user) { return done(null, false); }
      return done(null, user, REALM);
    });
  }
));

文档:passport-kerberos

您必须运行提供此基本身份验证服务的Kerberos或LDAP服务器。

[ 根据评论#1进行更新 ]

现在这些是“事实上的”标准,您可以使用其他服务,如FreeIPA(node-freeipa),但LDAP将是建议的路径。根据我的经验,OpenLDAP非常易于使用。

否则,您将需要开发自定义PAM集成,例如node-authenticate-pam项目。

var pam = require('authenticate-pam');
pam.authenticate('myusername', 'mysecretpassword', function(err) {
    if(err) {
      console.log(err);
    }
    else {
      console.log("Authenticated!");
    }
  });
回复:authenticate-pam

注意:此项目不再维护。