你能算出Active Directory使用的密码哈希吗?

bpe*_*kes 14 .net active-directory password-encryption

我们目前在我们的数据库中存储我们的Web应用程序的用户,以及他们的密码的哈希/盐.哈希是在创建用户时计算的,并设置其密码并存储在数据库的User表中.

在创建用户帐户后的某个时间,我们可能希望在我们的域中创建一个Windows帐户,并希望能够设置域用户的密码,使其与用户用于登录Web应用程序的密码相同.由于我们不保存密码的纯文本版本,因此我们无法在创建密码时将其发送到AD.

我考虑绕过这个问题的一种方法是计算AD在用户第一次设置密码时使用的所有不同的密码哈希值,然后在我们创建用户时以某种方式在AD中设置记录.

  1. 你会如何使用.Net创建哈希(我认为它们是MD4,MD5和DES)?
  2. 您是否可以绕过UserPrincpal.SetPassword上的密码创建,并进行其他调用以直接设置AD存储的哈希值?

似乎应该有办法实现这一点,因为MS具有从AD到Azure用户同步密码的工具.

Jar*_*tra 5

尝试保持AD密码与数据库密码同步是一个坏主意,原因有两个:

  • 这是一个安全漏洞(评论已经通过提及盐指出了这一点)
  • 这是一个维护问题.由Windows PC启动的密码更改将使DB密码保持不变.

而不是创建一个窗口使用相同密码的帐户,改变你的web应用验证使用这两个 AD身份验证和Windows窗体身份验证.这样,他们的AD凭据(如果他们有)将取代用户名/密码提示.