コードは次のとおりです。
using ADPTest.com.adp.hrbws;
using System.Security.Cryptography.X509Certificates;
using Microsoft.Web.Services3.Security;
using Microsoft.Web.Services3.Security.Tokens;
using Microsoft.Web.Services3.Security.Cryptography;
namespace ADPTest
{
class Program
{
static void Main(string[] args)
{
// Create the web service proxy.
HrbService proxy = new HrbService();
// Add the Username token.
UsernameToken usernameToken = new UsernameToken("user@ABC"," ");
proxy.RequestSoapContext.Security.Tokens.Add(usernameToken);
// Add the certificate for mutual SSL.
X509Certificate2 mutualCert = new X509Certificate2 "I:\\auth.pem", " ");
proxy.ClientCertificates.Add(mutualCert);
// Sign the message using the signing certificate.
X509Certificate2 signCert = new X509Certificate2("I:\\soap.pem", " ");
X509SecurityToken signatureToken = new X509SecurityToken(signCert);
MessageSignature signature = new MessageSignature(signatureToken);
proxy.RequestSoapContext.Security.Elements.Add(signature);
MutualCert の auth は私の公開証明書であり、signCert の SOAP は私の非公開証明書だと思いますが、よくわかりません。私は一種の (Web サービス) クックブックからコードを取得しました... Web サービスは、パスワードを見ていないと言っています。
エラーメッセージは次のとおりです。
「オブジェクトには鍵ペアの公開半分のみが含まれています。秘密鍵も提供する必要があります。」