我正在使用ldapjs(3.0.0)更改WeblogicLDAP目录中用户的密码。
我还有一些遗留的Web服务(我无法访问源代码)。
Webservice API执行以下操作:
authenticate(username, password)
changePassword(username, newPassword)
还有第三种方法可以修改密码:
going into weblogic console, finding the user, and entering a new password.
我想开始使用新的ldapjs代码来修改密码和进行身份验证,但是,目前,我还想在代码的其他部分继续使用现有的webservice API。
这就是我困惑(卡住)的地方
1.如果我使用遗留的Web服务API更改密码,我可以使用LDAPJS和Web服务API对用户进行身份验证。两个都工作得很好!
1.如果我通过Weblogic控制台更改密码,也是一样的。我可以使用LDAPJS和Web服务API进行身份验证。尽管如此,两者都工作得很好!
1.但是,如果我使用ldapjs修改密码(相同的用户,相同的测试密码),我可以在LDAPJS中对用户进行身份验证,但是当我尝试使用webservice API对用户名/密码进行身份验证时,它会失败,并显示“无效密码”。
我没有遗留的Web服务API的源代码,所以我试图了解可能导致问题的原因。通过LDAPJS更改密码是否可能以与通过Weblogic控制台更改密码时Weblogic控制台存储密码的格式不同的格式存储密码?如果是这样的话,这会导致用户名/密码只通过LDAPJS进行身份验证,而通过Web服务API破坏身份验证部分吗?
在我的所有测试中,我使用相同的用户、用户名、领域和WeblogicLDAP服务器。唯一的区别是我使用的方法更改密码。
这是我的更改密码看起来像这样。
export async function ldapChangePassword(username, password) {
//create the client
const ldapClient = ldap.createClient({
url: 'ldap://' + LDAPURL, //stored in env.local (root directory)
timeout: 10000, //ms
connectTimeout: 10000,
});
//bind to the server with a user authorized to perform the password change.
try{
bindToAdmin(ldapClient);
}catch(err){
ldapClient.unbind();
throw (err)
}finally{
}
// Set the new password
const dn = `uid=${username},ou=people,ou=myrealm,dc=${DC}`;
const newPassword = 'abcd1234655';
console.log(`Changing password: ${username} ${newPassword}`);
const userPasswordAttribute = new ldap.Attribute({
type: 'userPassword',
vals: newPassword
});
ldapClient.modify(dn,
[
new ldap.Change({
operation: 'replace',
modification: userPasswordAttribute
})
],
(err) => {
if (err) {
console.log(err);
} else {
console.log('Password change successful');
}
ldapClient.unbind();
});
}
我的输出看起来像这样:
Changing password: myUserNameABC abcd1234655
Password change successful
1条答案
按热度按时间wwtsj6pe1#
Mmmmh其实很奇怪,我用你的代码,它的工作fineeeee相反,你救了我,因为我用一些代码,我发现几乎每一个地方,这就像
但它从来没有为我工作过,相反,我尝试了一个小的修复(“vals”是不推荐的,所以我使用了“values”),它的workeeed和系统得到了我相同的响应,你有:“密码更改成功”,但在此之后,也试图登录与新的密码,它为我工作!
所以我不明白为什么它不完全为你工作,你确定你正在执行更改psw和登录相同的完全相同的用户dn???
谢谢你,丹尼尔