Nodejs ldapjs activedirectory - 在不知道当前密码的情况下重置密码

问题描述 投票:0回答:1

在Nodejs中如何在不知道当前密码的情况下重置活动目录密码?

我目前使用以下2个库。

https://www.npmjs.com/package/activedirectory

http://ldapjs.org/index.html

如果我知道当前的密码,我有下面的代码,它可以很好地工作。但我也想重置密码,如果我不知道当前的密码。

function modifyPassword() {

   return new Promise((resolve, reject) => {

    try {
      //ldapClient.bind(userDN, oldPassword, err => {
      ldapClient.bind(service_acc_user, service_acc_pwd, err => {
        if (err) {
          reject(err);
        }

        ldapClient.modify(userDN, [
          new ldap.Change({
            operation: 'delete',
            modification: {
              unicodePwd: encodePassword(oldPassword)
            }
          }),
          new ldap.Change({
            operation: 'add',
            modification: {
              unicodePwd: encodePassword(newPassword)
            }
          })
        ], (error) => {
          if (error) {
            reject(error);
          } else {
            resolve('Successfully password modified.');
          }
        });
      })
    } catch (error) {
      console.error(error);
      reject(error);

       }
      })
}

我尝试通过传递虚拟当前密码来使用上面的代码,但得到以下错误。

'00000056: AtrErr: DSID-03190F80, #1:\n\t0: 00000056: DSID-03190F80, problem 1005 (CONSTRAINT_ATT_TYPE), data 0, Att 9005a (unicodePwd)\n\u0000'
node.js active-directory ldap ldapjs
1个回答
0
投票

在同时发送adddelete时,Active Directory将其视为正常的密码重置,执行管理员密码重置Active Directory只希望接收replace命令。

我发布了Github issue,但是来到这里是为了得到正确的答案点。 :d

© www.soinside.com 2019 - 2024. All rights reserved.