如何使用ldapjs在活动目录中设置帐户选项?"/>
我如何使用ldapjs在活动目录中设置帐户选项?
我已使用nodejs的ldapjs
模块与我的active directory
进行交互。
我可以使用这些功能将用户绑定并添加到活动目录中...
ldapOptions = {
url: //my ldap server ip,
connectionTimeOut: 30000,
reconnect: true
}
const ldapClient = ldapJs.createClient(ldapOptions)
ldapClient.bind(adminDn, adminPass, (error) => {
if (error) {
// break the code
} else {
let newUser = {
cn: username,
sn: username,
description: // some desc,
objectClass: ['inetOrgPerson', 'user', 'person', 'top'],
userPassword: password
}
ldapClient.add(dn, newUser, err => {
if (err) {
console.log(err)
// break the code
} else {
console.log('success')
}
}
}
回答如下:但是在添加过程之后,帐户是
disabled
,用户must change password
是下一次登录。是默认的活动目录策略还是ldapjs的默认策略?如果可以的话,如何更改默认值...
您是否能够手动启用以这种方式创建的帐户?如果没有,我怀疑密码实际上没有设置。
userPassword
属性仅在启用后才能使用。即使这样,它实际上只是真实密码属性userPassword
的别名。但是unicodePwd
需要一些非常特定的格式。
您还必须确保与AD的安全连接,然后才能设置密码。您可以通过连接到636的LDAPS(基于SSL的LDAP)端口来进行此操作。unicodePwd
库允许您仅使用服务器name前面的unicodePwd
-您不能使用IP,因为SSL证书上的名称必须与您用于连接的域名匹配。并且运行此证书的计算机必须信任SSL证书。这可能会导致您出现问题。
我还注意到您缺少ldapjs
属性,这是必填属性。我看到您正在将ldaps://
属性设置为sAMAccountName
,但是该属性用于用户的姓氏(姓)。
所有这些都可以一起尝试(只需在顶部更改域名):
sn
我不是NodeJS开发人员,所以我从未真正使用username
库完成此操作。但是我已经用C#完成了所有这一切。这应该使您非常接近。让我知道这是否给您带来任何错误。我怀疑任何错误都可能来自SSL证书。
我找到的密码正确的编码ldapOptions = {
url: "ldaps://example",
connectionTimeOut: 30000,
reconnect: true
}
const ldapClient = ldapJs.createClient(ldapOptions)
ldapClient.bind(adminDn, adminPass, (error) => {
if (error) {
// break the code
} else {
let newUser = {
cn: username,
sAMAccountName: username,
description: // some desc,
objectClass: 'user',
unicodePwd: new Buffer('"' + password + '"', 'utf16le').toString(),
userAccountControl: 512 //NORMAL_ACCOUNT
}
ldapClient.add(dn, newUser, err => {
if (err) {
console.log(err)
// break the code
} else {
console.log('success')
}
}
}
}
。
更多推荐
我如何使用ldapjs在活动目录中设置帐户选项?
发布评论