所以...这是我的第一个问题,请放松一下,告诉我是否可以改善问题本身。
问题是,我们正在尝试在node.js
中建立Intranet,前提条件之一是,用户不必在每次登录计算机时都进行身份验证。
[我们已经在php
中拥有一个使用kerberos和ldap进行身份验证的应用程序,但我们正在尝试避免使用php
进行进一步的开发。
因此,主要问题是:有一种方法可以通过node.js
获取Windows Server中的当前登录用户?或者以其他方式使用node.js
开发SSO网络?
[我认为没有登录就没有安全的身份验证方法。我建议使用node-ldapjs,这样您就不需要PHP与ldap通信。
经过一些研究和测试,发现express-ntlm
是节点的最佳选择,即使该节点应用程序正在通过Windows Server运行,它也会获得计算机的用户登录名。
ntlm = require('express-ntlm');
var app = express();
app.use(ntlm({
debug: function() {
var args = Array.prototype.slice.apply(arguments);
console.log.apply(null, args);
},
domain: '<domain>',
domaincontroller: '<ldap://ldap.com>',
}));
app.all('*', function(request, response) {
response.end(JSON.stringify(request.ntlm)); // {"DomainName":"MYDOMAIN","UserName":"MYUSER","Workstation":"MYWORKSTATION"}
console.log(JSON.stringify(request.ntlm));
});
app.listen(3003);