使用 LDAP 提供程序设置和更改用户密码
若要设置用户密码,请使用 IADsUser.SetPassword 方法。
Active Directory 的 LDAP 提供程序使用三个进程之一来设置密码(iPlanet 等第三方 LDAP 目录不使用此密码身份验证过程)。 该方法可能因网络配置而异。 设置密码的方法顺序如下:
- 首先,LDAP 提供程序尝试使用 Kerberos。
- 其次,如果 Kerberos 失败,LDAP 提供程序将尝试建立安全 LDAP 连接。 若要成功运行安全 LDAP,LDAP 服务器必须安装适当的服务器身份验证证书,并且运行 ADSI 代码的客户端必须信任颁发这些证书的颁发机构。 服务器和客户端必须至少支持 128 位加密。
- 第三,如果安全 LDAP 连接失败,LDAP 提供程序将尝试 NetUserSetInfo API 调用。 在以前的版本中,ADSI 在线程运行的安全上下文中调用 NetUserSetInfo,而不是调用 IADsOpenDSObject.OpenDSObject 或 ADsOpenObject 中指定的安全上下文。 在更高版本中,已更改此项,以便 ADSI LDAP 提供程序在调用 NetUserSetInfo 时模拟 OpenDSObject 调用中指定的用户。
若要更改用户密码,请使用 IADsUser.ChangePassword 方法。 与 SetPassword 一样,此方法可以使用多个进程来更改密码。 更改密码方法的顺序相同:
- 首先,LDAP 提供程序尝试使用 Kerberos。
- 其次,LDAP 提供程序尝试使用安全 LDAP。
- 第三,如果安全 LDAP 连接失败,LDAP 提供程序将尝试 NetUserChangePassword API 调用。 与 SetPassword 一样,在早期版本中,ADSI LDAP 提供程序模拟使用 IADsOpenDSObject.OpenDSObject 方法或 ADsOpenObject 函数传递的用户凭据。