忘记密码



我正在尝试创建一个web应用程序,以使用System.Web.Security API基于问答重置密码。

我得到一个例外:

DirectoryServicesCOMException(0x8007202f):违反约束如果用户对该问题提供了一个错误的答案。

如果我将attributeMapFailedPasswordAnswerCount的值重置为不设置,则该帐户将再次变为活动帐户。

AD中的帐户锁定阈值设置为20次登录尝试。

我是广告知识的新手,如果有人能指导我如何解决这个问题,我将不胜感激。

谢谢。

我猜您在使用ASP.NET?我对它没有任何经验,也没有太多的.NET经验(我仍在学习),但这是一个非常有用的链接,提供了各种Active Directory API的示例(链接)。包括重置用户密码。如果您不确定如何设置DirectoryEntry类,这里有一个指向该类的链接(链接)。此外,浏览命名空间文档是非常非常有用的(链接)。也许我唯一喜欢微软的地方就是他们良好的文档。

我通常会做这样的事情(在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()

注:

  1. 如果这会返回多个结果,那么您就有问题了。

  2. 只有当运行this的帐户没有更改用户的权限时,才需要使用this和密码。我在一个未授权的帐户上运行这些,所以我必须在脚本中包含我的管理员凭据(别担心,它们不是硬编码的)

哦,你的帐户锁定阈值相当高。根据用户的能力,我建议3-5个。

最新更新