通过 ASP.NET 更改 AD 密码。当应用程序池在特权用户下运行时,访问被拒绝

通过 ASP.NET 更改 AD 密码。当应用程序池在特权用户下运行时,访问被拒绝

我正在尝试为测试域构建自助密码重置工具。我使用的是 ASP.NET 4 和 IIS 7。

我的代码:

string userDirectoryEntry = "WinNT://domain/" + usermapping[user[1]]
System.DirectoryServices.DirectoryEntry ADEntryToReset = new System.DirectoryServices.DirectoryEntry(userDirectoryEntry);

ADEntryToReset.Invoke("SetPassword", new object[] { newPassword });
ADEntryToReset.Properties["passwordExpired"][0] = 1;
ADEntryToReset.CommitChanges();

但是,当我提交密码更改时,访问被拒绝。我已将默认应用程序池更改为在可以更改密码的管理员帐户下运行。在 Visual Studio 调试器中运行良好。

我也尝试过明确向 DirectoryEntry 对象提供凭据(微软)。这也不起作用。

有任何想法吗?

答案1

您可能希望使用LDAP提供程序,而不是 2000 年之前的WinNT提供程序,后者与 相比有一些功能限制LDAPuserDirectoryEntry字符串应该以 开头,LDAP://而不是WinNT://

如果带有凭据的 msdn 示例不起作用,请尝试使用DirectoryEntry凭据初始化对象:

new DirectoryEntry(userDN,callerUsername,callerPwd);

http://msdn.microsoft.com/en-us/library/wh2h7eed.aspx

相关内容