.net core在非windows平台下修改AD用户密码
时间: 2024-03-12 18:42:56 浏览: 13
在非 Windows 平台下修改 AD 用户密码,可以使用 LDAP(Lightweight Directory Access Protocol)协议连接到 AD,然后执行修改密码操作。具体步骤如下:
1. 使用 LDAP 连接到 AD,需要使用用户名和密码进行身份验证。
2. 找到要修改密码的用户的 DN(Distinguished Name),可以使用查询操作来获取用户的 DN。
3. 使用修改密码的操作来更新用户的密码,需要提供旧密码和新密码。
下面是一个 .NET Core 的示例代码,可以参考:
```csharp
using System.DirectoryServices.Protocols;
// 创建 LDAP 连接
LdapConnection connection = new LdapConnection("ldap://your-ad-server");
connection.SessionOptions.ProtocolVersion = 3;
connection.AuthType = AuthType.Basic;
connection.Credential = new NetworkCredential("username", "password");
// 查询用户的 DN
string userFilter = "(sAMAccountName=username)";
SearchRequest userSearchRequest = new SearchRequest("CN=Users,DC=your-domain,DC=com", userFilter, SearchScope.Subtree);
SearchResponse userSearchResponse = (SearchResponse)connection.SendRequest(userSearchRequest);
string userDN = userSearchResponse.Entries[0].DistinguishedName;
// 修改用户密码
ModifyRequest modifyRequest = new ModifyRequest(userDN, DirectoryAttributeOperation.Replace, new object[] { new DirectoryAttribute("unicodePwd", Encoding.Unicode.GetBytes("\"new-password\"")) });
modifyRequest.Controls.Add(new PasswordModifyControl(Encoding.Unicode.GetBytes("\"old-password\"")));
ModifyResponse modifyResponse = (ModifyResponse)connection.SendRequest(modifyRequest);
```
需要注意的是,修改密码需要绑定旧密码,因此需要提供旧密码的明文或哈希值。在示例代码中,使用了 PasswordModifyControl 控件来绑定旧密码的明文。如果旧密码是哈希值,需要将哈希值转换为 byte[] 数组进行绑定。