单个用户是否可以使用 MS Active Directory 拥有多个凭证集

单个用户是否可以使用 MS Active Directory 拥有多个凭证集

我们目前正在将现有的基于数据库的身份验证转换为 Active Directory。在现有实现中,密码以明文形式保存在数据库中(我知道这很糟糕,这就是我们要转换的原因)。当用户登录到我们的客户端应用程序(而不是浏览器)时,应用程序会使用 MD5 哈希对密码进行哈希处理,并将其发送到服务器。服务器查询数据库中提供的登录名,对明文密码进行哈希处理,然后比较结果。

因为这是一个客户端应用程序,所以升级所有客户端需要时间(可能要几个月)。因此,我们希望支持这两种身份验证方法,直到客户端完全转换为止。

实现此目的的一种方法是让单个 Active Directory 用户拥有两个密码,即真实密码和密码的 MD5 哈希值。如果他们输入其中任何一个,他们都会通过身份验证。

单个用户可以在 Active Directory 中支持多个密码吗?

例如,真实用户 Jon Smith 是否可以有两组登录密码: 1. login = “jon”,password = “pass1” 2. login = “jon”,password = “pass2”

如果 Jon 在登录时输入其中任何一个,他就将成功通过身份验证。

谢谢

答案1

答案基本上是不行。AD 只允许每个用户帐户使用一个密码。由于 AD 有用户名和 2000 年之前的用户名,我想您可以将两个用户名拼凑在一起用于一个帐户,但这不是一个好主意。您需要这样做有什么特别的原因吗?也许有更好的解决方案可以满足您的需求?

答案2

您不能拥有多个密码,但您可以使用多个 UPN 扩展名拥有多个用户名。

例如,对于域 contoso.com,您可以拥有以下登录信息: [电子邮件保护] [电子邮件保护] [电子邮件保护]

所有这些都与同一个帐户相关联。但是,您仍然只有一个密码。

答案3

您要做的是改变您的客户端来根据两个来源检查身份验证。

换句话说,在转换到 Active Directory 时保留现有数据库。让客户端检查 AD 帐户,如果没有进行身份验证,请让他们检查旧式身份验证源。

任何让 AD 接受多个用户名/密码造成的损害都将是您需要长期处理的事情。只需运行并行身份验证源,直到您完成所有转换。

答案4

Active Directory 不支持您描述的单个安全标识符 (SID)。每个 SID 只能有一个用户名/密码组合。

在某种程度上,您可以通过创建一个“jon1”和“jon2”都是其成员的组对象,并在与“Jon Smith”相关的所有权限(文件系统、Exchange 邮箱等)中使用该组来从功能上实现这一点。(无论如何,您应该对几乎所有权限都使用组。)只要您使用的软件没有无法处理使用组的 SID 而不是 Jon 用户帐户中的 SID,您就没问题。

相关内容