2016-02-25 82 views
2

我公司正在開發的主要項目是一個AngularJS Web應用程序,它爲所有數據調用C#.Net REST API。此應用程序的用戶都已登錄到綁定到Active Directory的Windows計算機上。這意味着所有認證都由操作系統來處理,因爲所有憑證都是由網絡瀏覽器自動發送並由IIS處理的。使用nodeJS對活動目錄進行身份驗證

我最新的任務是讓不同的NodeJS應用程序調用REST服務並對數據執行一些操作。不幸的是,即使我使用適當的Active Directory憑據登錄到計算機,它們也沒有與REST請求一起發送,這會導致IIS發生401.2錯誤。確保現有Active Directory憑證與NodeJS REST請求一起發送的正確方法是什麼?

回答

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')); 
}); 
相關問題