我们正在将我们现有的基于数据库的身份validation转换为Active Directory。 在现有的实现中,密码保存在数据库中的明文(我知道这是不好的,这就是为什么我们正在过渡)。 当用户login到我们的客户端应用程序(而不是浏览器)时,应用程序使用MD5哈希散列密码,并将其发送到服务器。 服务器向数据库查询提供的login名,散列明文密码并比较结果。
因为这是一个客户端应用程序,升级我们所有的客户端需要时间(可能是几个月)。 所以,我们希望支持这两种authentication方法,直到客户完全过渡。
这样做的一种方法是让一个Active Directory用户拥有两个密码,即真实密码和密码的MD5散列。 如果他们进来,他们将被authentication。
单个用户可以在Active Directory中支持多个密码吗?
例如,真实用户Jon Smith可以拥有两组login密码:1. login =“jon”,password =“pass1”2. login =“jon”,password =“pass2”
如果Jon在login时通过其中任何一个,他将被成功validation。
谢谢
这个答案基本上没有。 AD允许每个用户帐户只有一个密码。 由于AD有用户名和2000以前的用户名,我想你可以把两个用户名合并为一个帐号,但是这不是个好主意。 任何特殊的原因,你需要这个? 也许有更好的解决scheme来满足你的需求?
您不能有多个密码,但是您可以使用多个UPN分机有多个用户名。
即域contoso.com你可以login:[email protected] [email protected] [email protected]
所有这些与相同的帐户关联。 但是,您仍然只有一个密码。
你想要做的是改变你的客户端来检查两个来源的身份validation。
换句话说,在转换到Active Directory时保留现有的数据库。 让客户端检查AD帐户,如果没有授权,让他们检查传统的authentication来源。
你做任何损害,使广告接受多个用户名/密码将是你长期处理的东西。 只需运行并行身份validation来源,直到您全部过渡。
我真的不明白你为什么需要这样做,但是我同意Sam的观点,没有办法做到这一点。
你可以复制一个用户或给用户完全相同的权限,甚至访问相同的邮箱和资源等,但我没有看到一种方法来有一个帐户多个用户名。
Active Directory不支持您为单个安全标识符(SID)描述的内容。 每个SID只能有一个用户名/密码组合。
您可以通过创build一个“jon1”和“jon2”都是成员的组对象,并在与“Jon Smith”有关的所有权限(文件系统,Exchange邮箱等)中使用该组来实现此function。 (无论如何你应该使用几乎每一个权限的组)。只要你没有使用任何不能处理组的SID的软件,而不是使用来自Jon用户帐户的SID,那么你就可以。
有一个非常丑陋的方式可以做到这一点,但为什么你想要?
活动目录用户ID实际上只是通过其真实名称,安全标识符或SID来识别帐户的简便方式。 每个用户对象有几个属性分配给它,可以用来login:samaccountname,用户主要名称等。这些可能有不同的值,但你仍然只有一个单一的密码。 您可以通过“用户和计算机”MMC控制台“复制”用户,这将确保两个用户帐户具有相同的组成员资格和通用数据,但是您仍然会拥有两个不同的密码不同的用户对象。 他们会有不同的SID,并被AD认为是不同的用户,虽然你可以通过给账户显示完全相同的显示名称来使他们看起来一样。
如果你真的,真的想要打破你的AD,你可以尝试使用SID-History属性插入一个重复的SID到目录中。 我强烈build议你不要试图这样做。 事实上,除非您非常熟悉AD结构和低级编程,否则您将会遇到困难。 Microsoft迁移工具不会让您插入重复的SID到SID历史中,因为这应该是一个唯一的属性值。 我相信,如果你在使用MFC编写自己的访问方法并重写一些内置的安全措施,就可以完成。 但不要这样做。