我猜你正在使用ASP.NET?我没有任何经验,也没有太多的.NET经验(我仍然在学习自己),但这是一个非常有用的链接,提供了各种Active Directory API的示例(link)。包括重置用户密码。这是DirectoryEntry类的链接,如果您不确定如何设置它(link)。另外,只需浏览namespace documentation是非常非常有用的(link)。我喜欢微软的唯一可能是他们的优秀文档。
我平时做这样的事情(在IronPython的,所以它不会直接转化为代码,你可以使用):
ou = System.DirectoryServices.DirectoryEntry("LDAP://ou=Users,dc=whatever,dc=something,dc=localetc")
search = System.DirectoryServices.DirectorySearcher(ou, "(samAccountName="+acc"+")", Array[str](["distinguishedName"]]))
result = search.FindAll() # note 1
if result.Count != 1:
raise BadError
else:
ent = System.DirectoryServices.DirectoryEntry(result[0].Properties["distinguishedName"][0])
ent.Username = admin # note 2
ent.Password = pwd
ent.Invoke("SetPassword", Array[object](["newpassword!"]))
ent.Properties["LockOutTime"].Value = 0
ent.CommitChanges()
注:
如果这个不断返回多个结果,你有问题。
只有在运行此帐户的帐户无权更改用户时,才需要此密码和密码。我上unprivelaged帐户运行这些,所以我必须在脚本中包含我的管理员凭据(别担心,他们没有硬编码)
哦,你的帐户锁定阈值是相当高的。我建议3-5,取决于你的用户的才能。
基于安全问题重置AD密码的Web服务?听起来像一个非常糟糕的主意......无论如何,没有代码的情况下,这种例外是无用的。如果您发布抛出此异常的代码,则更有可能有人可以帮助您。 – Ran 2012-07-26 21:22:04
谢谢你给我关于潜在安全警告的建议。我计划将它扩展到手机并在私人电子邮件上发送密码重置。但现在我不得不提出这个网络服务。 – user984201 2012-07-27 11:44:23
问题是,当映射到attributeMapFailedPasswordAnswerCount这个字段的when属性被设置为异常时,所有具有AD功能都会抛出,包括登录,更改密码或更改安全问题/答案。 – user984201 2012-07-27 11:47:37