使用nodeJS与Active Directory进行身份validation

我公司正在开发的主要项目是一个AngularJS Web应用程序,它为所有数据调用一个C#.Net REST API。 此应用程序的用户都login到绑定到Active Directory的Windows计算机上。 这意味着所有的身份validation都由操作系统来处理,因为所有的凭证都是由网页浏览器自动发送并由IIS处理的。

我最新的任务是有一个不同的NodeJS应用程序调用REST服务,并与数据做一些东西。 不幸的是,即使我使用适当的Active Directory凭据login到计算机,它们也不会与REST请求一起发送,从而导致IIS发生401.2错误。 什么是确保现有的Active Directory凭证与NodeJS REST请求一起发送的正确方法?

node-sspi 。 使用示例:

 'use strict'; var express = require('express'); var app = express(); var server = require('http').createServer(app); app.use(function (req, res, next) { var nodeSSPI = require('node-sspi'); var nodeSSPIObj = new nodeSSPI({ retrieveGroups: true }); nodeSSPIObj.authenticate(req, res, function(err){ res.finished || next(); }); }); app.use(function (req, res, next) { var out = 'Hello ' + req.connection.user + '! You belong to following groups:<br/><ul>'; if (req.connection.userGroups) { for (var i in req.connection.userGroups) { out += '<li>'+ req.connection.userGroups[i] + '</li><br/>\n'; } } out += '</ul>'; res.send(out); }); // Start server var port = process.env.PORT || 3000; server.listen(port, function () { console.log('Express server listening on port %d in %s mode', port, app.get('env')); });