我们公司目前有一个Linux守护程序,它使用操作系统用户/密码和特定于应用程序的用户/密码来处理身份验证。我正在重新实现此守护程序作为node.js Web服务。
如何检查节点应用中的操作系统级凭据?(我知道有些人会说我们根本不应该使用操作系统身份验证,但这是一个很难的要求我做的产品。)
答案 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);
});
}
));
您必须运行提供此基本身份验证服务的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
注意:此项目不再维护。