Как использовать X509Certificate2 в качестве учетных данных для запроса SharePointService - PullRequest
0 голосов
/ 01 июня 2011

У меня есть ферма 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.Любая помощь или совет будет принята с благодарностью.

1 Ответ

0 голосов
/ 02 июня 2011

Оказывается, все было не так.Чтобы правильно сделать это, я заменил:

service.Credentials = GetCertCreds ()

на

service.ClientCertificates.Add (GetCretCreds ());

Добавление сертификата в коллекцию клиентских сертификатов службы - это все, что нужно, чтобы это произошло.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...