我们正在使用Active Directy和C#实施数字签名ad-hoc方案。 我们想知道如何从用户在AD上的帐户条目中检索私钥(或用户的PFX文件),以便我们可以使用该私钥来签署一些信息。同时,如何在AD中为每个用户正确安装PFX文件? (以便我们以编程方式稍后检索它)
我们已经访问AD并从“userCert”字段中检索公钥信息,我们现在用它来验证签名文档,但我们需要先访问私钥才能签署这些文档!
我们正在使用LDAP来访问AD。像这样:
DirectoryEntry o2ADEntry = new DirectoryEntry("LDAP://darwin.charles/DC=domain, DC=info", "user", "password");
DirectorySearcher o2objSearch = new System.DirectoryServices.DirectorySearcher(o2ADEntry);
o2objSearch.PropertiesToLoad.Add("samaccountname");
o2objSearch.PropertiesToLoad.Add("displayname");
o2objSearch.PropertiesToLoad.Add("userCert");
o2objSearch.Filter = (string.Format("(samaccountname={0})", "user"));
SearchResult res = o2objSearch.FindOne();
if (res != null)
{
CreateNavigator().SelectSingleNode("/my:myFields/my:name", NamespaceManager).SetValue(res.GetDirectoryEntry().Properties["displayname"].Value.ToString());
FormState["certificate"] = res.GetDirectoryEntry().Properties["userCert"].Value;
}
我们也使用标准的Microsoft Crypto API(没有bouncycastle,没有OpenSSL.NET)。
我们在这里查看http://technet.microsoft.com/en-us/library/aa996408(v=exchg.65).aspx,但没有说明如何访问私钥。
非常感谢,朋友们!