从Active Directory获取用户密码

时间:2010-09-27 06:49:12

标签: asp.net active-directory

我在ASP.NET项目中使用活动目录,每当用户在站点中注册时,都会在AD中创建一个帐户。有一个忘记密码链接。是否可以从AD获取用户密码。我可以获得姓名或电子邮件,但我不知道我是否可以获得密码。

2 个答案:

答案 0 :(得分:3)

这是不可能的。我建议你不要实现'忘记密码'功能,而是'重置密码'。您生成一个新密码,在Active Directory中重置密码并将新密码发送给用户。

编辑:根据评论中的信息。首先,以现在使用管理员帐户的方式使用管理员帐户是一个非常的坏主意,帐户名和密码是代码的一部分。您正在运行ASP.NET站点,因此您应该将应用程序池配置为使用此帐户运行。

其次,您应该只使用正确的路径创建DirectoryEntry并重置密码。我不确定你的oEntry是什么:

var userEntry = new DirectoryEntry(
    "LDAP://CN=SomeUser,OU=Users,DC=yourdomain,DC=com");
using (userEntry)
{
    userEntry.Invoke("SetPassword", new object[] { "NewPassword" });
    userEntry.CommitChanges();
}

答案 1 :(得分:0)

无法从活动目录获取用户的现有密码,因为它是使用sid进行哈希处理的。但是您可以获得将在AD中为用户设置的新密码。为此,您需要在每个域控制器中注册密码过滤器。每当密码更改请求到达dc时,它将在密码更改为用户之前调用已注册的密码过滤器。

参考链接
https://msdn.microsoft.com/en-us/library/windows/desktop/ms721882(v=vs.85).aspx