1

コードは次のとおりです。

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 サービスは、パスワードを見ていないと言っています。

エラーメッセージは次のとおりです。

「オブジェクトには鍵ペアの公開半分のみが含まれています。秘密鍵も提供する必要があります。」

4

1 に答える 1

2

.Net フレームワークが使用できるようにするには、.pem ファイルを .pfx に変換する必要があります。.pfx には、公開キーと秘密キーの両方が含まれます。OpenSSL を使用して、ADP から送信された .pem ファイルを .pfx ファイルに変換できます。

http://www.openssl.org/

MutualCert は、ADP に接続するための SSL 証明書です。 signCert は、SOAP/Web サービスの呼び出しに使用されます。

私は数ヶ月間、ADP とのインターフェイスに取り組んできましたが、まだ問題があります。

これが役立つことを願っています-Doug

于 2011-08-03T13:41:16.273 に答える