0

アクセスするにはクライアント証明書が必要な 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 に変換することだと思います。ヘルプやアドバイスをいただければ幸いです。

4

1 に答える 1

0

私はそれをすべて間違っていたことがわかりました。これを正しく行うために、次のように置き換えました。

service.Credentials = GetCertCreds()

service.ClientCertificates.Add(GetCretCreds());

サービスのクライアント証明書コレクションに証明書を追加するだけで済みます。

于 2011-06-02T01:35:06.083 に答える