express-ntlm возвращает неправильного пользователя - PullRequest
0 голосов
/ 28 января 2019

Я использую express-ntlm , чтобы получить идентификатор Windows текущего пользователя в настройках интрасети.Он работает нормально большую часть времени, но иногда он возвращает идентификатор совершенно другого человека.Я предполагаю, что это как-то связано с сессиями, может быть?

const ntlm = require('express-ntlm');

module.exports = app => {

  app.use(
    ntlm({
      debug: function() {
        var args = Array.prototype.slice.apply(arguments);
        console.log.apply(null, args);
      },
      domain: 'MS',
      domaincontroller: 'ldap://something.com'
    })
  );
app.post('/get-user-details/', (req, res) => {
console.log(req.ntlm.UserName); //Returns correct user most of the time, but sometimes it returns different person who open site at the same time
});

1 Ответ

0 голосов
/ 26 мая 2019

К сожалению, NTLM аутентифицирует соединения, а не сеансы.Что было хорошо в прошлом, но больше не имеет смысла, так как браузер имеет тенденцию открывать несколько соединений одновременно, чтобы ускорить загрузку страницы, а обратные прокси-серверы делят соединения с бэкэндом.Вот в чем проблема: ваш обратный прокси-сервер будет повторно использовать уже аутентифицированные соединения с бэкэндом и, следовательно, смешивать пользователей.Чтобы устранить эту проблему, необходимо убедиться, что на вашем обратном прокси-сервере включена поддержка NTLM.

Все еще существует открытый запрос на извлечение для express-ntlm, который добавляет свойство Keep-Alive, которое можетрешить эту проблему, к сожалению, она широко не проверена и сначала должна быть проверена.

...