【问题标题】:express-ntlm returning the wrong userexpress-ntlm 返回错误的用户
【发布时间】:2019-01-28 14:51:18
【问题描述】:

我正在使用express-ntlm 在 Intranet 设置中获取当前用户的 Windows ID。它大部分时间都可以正常工作,但偶尔它会返回一个完全不同的人的 ID。我猜这可能与会话有关?

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

【问题讨论】:

    标签: node.js express-ntlm


    【解决方案1】:

    不幸的是,NTLM 验证的是连接,而不是会话。这在过去很好,但不再有意义,因为浏览器倾向于一次打开多个连接以加快页面加载速度,并且反向代理正在共享与后端的连接。这就是问题所在:您的反向代理将重用已通过身份验证的后端连接,因此会混淆用户。要缓解此问题,您必须确保您的反向代理启用了 NTLM 支持。

    对于express-ntlm 仍有一个open pull request,它添加了一个可能解决此问题的Keep-Alive 属性,不幸的是,它未经广泛测试,首先需要验证。

    【讨论】:

    • 感谢您的信息。目前有人在测试 PR 吗?
    • 随意测试它并在 GitHub 上提供反馈。
    • 完成@Fabio-poloni
    猜你喜欢
    • 1970-01-01
    • 2017-01-02
    • 1970-01-01
    • 2019-03-17
    • 2022-08-05
    • 2013-05-13
    • 2019-06-29
    • 2021-11-05
    • 1970-01-01
    相关资源
    最近更新 更多