使用nodeJS

时间:2016-02-25 18:45:41

标签: node.js rest iis asp.net-web-api

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

我的最新任务是让一个不同的NodeJS应用程序调用REST服务并对数据做一些事情。不幸的是,即使我使用正确的Active Directory凭据登录到计算机,也不会将其与REST请求一起发送,这会导致IIS发生401.2错误。确保使用NodeJS REST请求发送现有Active Directory凭据的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

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'));
});