有没有办法将指纹模板添加到活动目录?如果是,请建议几种可能的方法……以及是否有任何 SDK 或 API 可用于将指纹图像存储到服务器(Windows Active Directory)?
答案1
当然……在我看来这有点令人毛骨悚然,但你可以做到。
首先,您需要确定一个可以存储所需数据类型的良好属性,扩展 AD 架构通常是最后的手段。如果可能,最好使用现有属性。
那么指纹图像...就像 JPEG 一样,对吗?
嗯,目录中的每个用户帐户恰好都有一个方便的 jpegPhoto 属性。
http://msdn.microsoft.com/en-us/library/ms676813(v=vs.85).aspx
有多种方法可以以编程、可编写脚本的方式与 Active Directory 交互。但我们使用 Powershell 来实现这一点,因为 Powershell 非常棒。
首先,如果您还没有安装 Active Directory Powershell 模块,则需要安装它。例如,Windows 2008 R2 域控制器在安装 AD DS 时就已经安装了它。但您也可以在任何工作站上通过 RSAT(远程服务器管理工具)安装它,并以远程 DC 为目标。Powershell 版本越新越好。
在旧版本的 PS 上,您必须明确加载 AD Powershell 模块:
Import-Module ActiveDirectory
在较新版本的 PS 中,当您使用该模块时,它会自动为您加载。
接下来,你需要将图像转换成字节数组:
$Fingerprint = [byte[]](Get-Content C:\fingerprint.jpg -Encoding byte)
接下来,将新编码的指纹图像存储到用户帐户的 jpegPhoto 属性中:
Set-ADUser jdoe -Replace @{jpegPhoto=$Fingerprint}
您可以通过查看用户的 jpegPhoto 属性来验证操作是否成功:
Get-ADUser jdoe -Properties jpegPhoto
如果操作成功,您将看到很多字节。您假设的指纹读取应用程序将需要知道如何查询 Active Directory,并将字节流渲染回人类可识别的 JPEG。(Powershell 可以轻松完成。)
现在您需要将这个概念包装成一个脚本,该脚本循环遍历一群用户并为每个用户加载指纹图像。
警告:在 Active Directory 中存储大量数据会导致数据库大小增加,并增加复制流量。请使用小图像。