要在不知道当前密码的情况下重置“Node.js ldapjs activedirectory”中的密码,可以使用以下代码示例来实现:
const ldap = require('ldapjs');
const client = ldap.createClient({
url: 'ldap://ldap.example.com',
});
const username = 'user1';
const newPassword = 'newPassword123';
client.bind('admin', 'adminPassword', (err) => {
if (err) {
console.error('LDAP bind error:', err);
return;
}
// 搜索用户条目
const opts = {
filter: `(sAMAccountName=${username})`,
scope: 'sub',
};
client.search('ou=users,dc=example,dc=com', opts, (err, res) => {
if (err) {
console.error('LDAP search error:', err);
return;
}
res.on('searchEntry', (entry) => {
const userDN = entry.objectName;
// 更新用户密码
const change = new ldap.Change({
operation: 'replace',
modification: {
unicodePwd: Buffer.from(`"${newPassword}"`, 'utf-16le'),
},
});
client.modify(userDN, change, (err) => {
if (err) {
console.error('LDAP modify error:', err);
return;
}
console.log('Password reset successfully.');
});
});
res.on('error', (err) => {
console.error('LDAP search error:', err);
});
});
});
上述代码假设你已经安装了ldapjs
模块,并且具有管理员权限。在代码中,我们首先创建一个LDAP客户端,然后使用管理员凭据绑定到LDAP服务器。
接下来,我们使用search
方法搜索特定用户名的用户条目,并获取其DN(Distinguished Name)。
然后,我们创建一个Change
对象来表示要进行的修改操作。在这种情况下,我们使用'replace'
操作来替换用户的密码。
最后,我们使用客户端的modify
方法将更改应用到用户条目中。如果操作成功,我们将收到Password reset successfully.
的消息。
请注意,上述代码中的服务器URL、管理员凭据和LDAP搜索基础等信息需要根据实际情况进行相应的更改。