NPM - ActiveDirectory模块身份验证

时间:2017-05-10 09:34:45

标签: node.js authentication encryption npm active-directory

我在我的一个节点应用程序中使用来自npmjs的activedirectory module来对Active Directory进行身份验证,我的问题是 - 在使用AD进行身份验证时是否需要发送纯字符串密码?我的意思是,如果广告存储用户密码,它必须以某种方式加密它,我们可以发送加密密码进行身份验证吗?这就是我的意思 -

ad.authenticate(username, password, function(err, auth) { 
// instead of plain password can it be encrypted password?
 if (err) {
    console.log('ERROR: '+JSON.stringify(err));
    return;
  }

  if (auth) {
    console.log('Authenticated!');
  }
  else {
    console.log('Authentication failed!');
  }
})

1 个答案:

答案 0 :(得分:2)

解决方案是使用ldaps(安全LDAP)并在首次连接时提供CA以进行验证。通过线路发送的凭证将被加密,如果您强制进行证书验证,MITM攻击将无效。

const ActiveDirectory = require("activedirectory");
const ad = new ActiveDirectory({
    url: "ldaps://dc.domain.com",
    baseDN: "dc=domain,dc=com",
    username: "username@domain.com",
    password: "password",
    tlsOptions: {
        ca: [fs.readFileSync("CA.crt")],
        rejectUnauthorized: true // Force Certificate Verification 
    }
});