有谁知道如何在C#中重置Active Directory的密码?
我编写了以下代码来重置Active Directory中的密码:
[WebMethod] public static string ResetPassword(string test) { string userDn = "CN=Joe Bloggs,OU=Test Accounts,OU=ST IT,OU=Departments,OU=Internal,OU=Divisions,DC=thegroup,DC=com,DC=au"; string password = "!qwer12345"; DirectoryEntry uEntry = new DirectoryEntry(userDn); uEntry.Invoke("SetPassword", new object[] { password }); uEntry.Properties["LockOutTime"].Value = 0; //unlock account uEntry.Close(); return "hello"; }
当我运行代码时,当它到达行uEntry.Invoke("SetPassword", new object[] { password });
有谁知道造成这个问题的原因以及我如何解决这个问题?
答案 0 :(得分:1)
This似乎解释了问题的原因 - 您需要提供管理员凭据(用户名和密码)。
我认为这是一个安全问题 - 当你在本地运行时 直接在Windows上,它是在您自己的帐户下执行的 很可能有足够的权限来创建用户。
当您通过Web服务执行此操作时,您将其作为“匿名”运行 ASP.NET用户默认情况下很可能没有权限 这样做。
因此,当您绑定到AD时,您将需要提供凭据(用户名 和密码),足够特权,以便能够创建 用户。您可以在“new DirectoryEntry()”构造函数中执行此操作 - 检查它是否过载。