如何解决如何将X509Certificate2用作SharePointService请求的凭据
|| 我有一个需要客户端证书才能访问的MOSS 2007服务器场。我已经编写了几种使用内置SharePoint服务从网站检索数据的方法。但是,在我的本地测试环境之外,所有内容都需要客户端证书才能访问服务。 我检索证书的方法是:private static X509Certificate2 GetCertCreds()
{
X509Store store = new X509Store(StoreName.My,StoreLocation.LocalMachine);
try
{
store.Open(OpenFlags.ReadOnly);
X509Certificate2Collection certs = store.Certificates.Find(X509FindType.FindBySubjectKeyIdentifier,\"SiteIdentityCertificateSerialNumber\",true);
Assert.IsNotNull(certs);
return certs[0];
}
finally
{
store.Close();
}
}
然后在使用中我必须有一些类似的东西:
using (ListsServiceProxy.Lists service = new ListsServiceProxy.Lists())
{
service.Crendentials = GetCredentials();
XmlNode idResultsNode = service.GetListItems(documentLibraryName,null,queryNode,viewNode,\"1\",optionNode,null);
}
由于类型不匹配,无法编译。我会以错误的方式处理吗?如果没有,可以使用证书作为服务凭据吗?我认为最终我想做的是将X509Certificate2转换为ICredentials。任何帮助或建议,将不胜感激。
解决方法
原来我错了。为了正确地做到这一点,我更换了:
service.Credentials = GetCertCreds()
与
service.ClientCertificates.Add(GetCretCreds());
只需将证书添加到服务的客户端证书集中即可。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。