Я развертываю свое приложение node + express, которое использует проверку подлинности Windows. Для этого я следовал документации Windows-auth PassportJS. Но я сталкиваюсь с ошибкой =>
iisnode обнаружил ошибку при обработке запроса.
HRESULT: 0x2
HTTP статус: 500
Подстатус HTTP: 1002
Причина HTTP: внутренняя ошибка сервера
Вы получаете этот ответ HTTP 200, потому что параметр конфигурации system.webServer/iisnode/@devErrorsEnabled имеет значение «true».
В дополнение к журналу stdout и stderr процесса node.exe рассмотрите возможность использования отладки и трассировки ETW для дальнейшей диагностики проблемы.
Последние 64 КБ вывода, сгенерированного процессом node.exe для stderr, показаны ниже:
Приложение сгенерировало необработанное исключение и завершено:
Ошибка: стратегии аутентификации должны иметь имя
в Passport.use (C: \ Workspace \ Trial \ node_modules \ passport \ lib \ passport \ index.js: 51: 20)
на объекте. (C: \ Workspace \ Trial \ server.js: 7: 10)
в Module._compile (внутренний / modules / cjs / loader.js: 689: 30)
в Object.Module._extensions..js (внутренний / modules / cjs / loader.js: 700: 10)
в Module.load (внутренний / modules / cjs / loader.js: 599: 32)
в tryModuleLoad (внутренняя / modules / cjs / loader.js: 538: 12)
в Function.Module._load (внутренняя / modules / cjs / loader.js: 530: 3)
в Module.require (внутренняя / modules / cjs / loader.js: 637: 17)
по требованию (внутренняя / modules / cjs / helpers.js: 22: 18)
на объекте. (C: \ Program Files (x86) \ iisnode \ interceptor.js: 210: 1)
server.js
<configuration>
<system.webServer>
<iisnode promoteServerVars="LOGON_USER" />
<handlers>
<add name="iisnode" path="server.js" verb="*" modules="iisnode" />
</handlers>
<rewrite>
<rules>
<rule name="sendToNode">
<match url="/*" />
<action type="Rewrite" url="server.js" />
</rule>
</rules>
</rewrite>
</system.webServer>
<system.web>
<authentication mode="Windows" />
</system.web>
</configuration>
web.config
var express = require('express');
var app = express();
var passport = require('passport');
var WindowsStrategy = require('passport-windowsauth');
passport.use(function(profile, done){
User.findOrCreate({ waId: profile.id }, function (err, user) {
done(err, user);
});
});
app.get('/NodeTrialLogon/', function (req, res) {
res.send('Express is workin on IISNode!');
});
app.get('/NodeTrialLogon/express-passport',
passport.authenticate('WindowsAuthentication'),
function (req, res){
res.json(req.user);
});
app.listen(process.env.PORT);
Пожалуйста, помогите. Я включил проверку подлинности Windows в IIS и отключил все другие формы проверки подлинности.