C# OpenLDAP 错误:unicodePwd:属性类型未定义

Posted

技术标签:

【中文标题】C# OpenLDAP 错误:unicodePwd:属性类型未定义【英文标题】:C# OpenLDAP Error: unicodePwd: attribute type undefined 【发布时间】:2022-01-20 05:35:17 【问题描述】:

我正在尝试使用库 Novell.Directory.Ldap 从 ASP.NET Core Web API 更改 OpenLDAP 的用户密码。 OpenLDAP 在启用 SSL 的 Ubuntu 18.04 上配置。所以我使用选项SecureSocketLayer = truePort = 636 进行连接。以下是修改密码的代码:

string oldPassword = '"' + OldPassword + '"'; 
string newPassword = '"' + NewPassword + '"'; 
var oldPasswordbytes = Encoding.Unicode.GetBytes(oldPassword);
var newPasswordbytes = Encoding.Unicode.GetBytes(newPassword);

LdapModification[] modifications = new LdapModification[2];
LdapAttribute deletePassword = new LdapAttribute("unicodePwd", oldPasswordbytes);
modifications[0] = new LdapModification(LdapModification.Delete, deletePassword);
LdapAttribute addPassword = new LdapAttribute("unicodePwd", newPasswordbytes );
modifications[1] = new LdapModification(LdapModification.Add, addPassword);
connection.Modify(userDn, modifications);

此代码适用于 AD 域。但是对于 OpenLDAP,它给出了错误:

unicodePwd:属性类型未定义

我尝试了userPassword 而不是unicodePwd,但出现了相同类型的错误。 此错误是否属于 OpenLDAP 中不存在的属性,或者我不能将此代码用于 OpenLDAP?如何使用 C# 库更改 OpenLDAP 用户密码?

【问题讨论】:

【参考方案1】:

只有 Active Directory 需要密码值的特殊格式。对于 OpenLDAP,只需使用不带引号的常规字符串。

此外,OpenLDAP 使用userPassword 属性。

【讨论】:

以上是关于C# OpenLDAP 错误:unicodePwd:属性类型未定义的主要内容,如果未能解决你的问题,请参考以下文章

openLDAP

jenkinSVNarchery集成openLDAP

Linux/UNIX OpenLDAP实战指南勘误

从源构建 OpenLDAP 并缺少 BerkelyDB [关闭]

openldap 2.4 使用 Syncrepl 配置复制

openldap 和 root 密码