0

サーバーPCのWCFでWebサービスを構築しました。httpsエンドポイントを作成し、いくつかのローカル証明書を構成しました。ネットワーク上で、サービスをテストするためのC#コンソールクライアントを作成しようとしています。しかし、私はこのエラーを受け取ります:未処理の例外:System.ServiceModel.Security.SecurityNegotiationException:呼び出し元はサービスによって認証されていません。---> System.ServiceModel.FaultE xception:認証に失敗したため、セキュリティトークンの要求を満たすことができませんでした(およびそれ以上)。

ここに私が接続したいエンドポイントのコードがあります:

http://pastebin.com/GGe6YaTb

そして、これが私のクライアントになります。

    <bindings>
        <wsHttpBinding>
            <binding name="WebDataServiceHttpBinding" closeTimeout="00:01:00"
                openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
                maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
                allowCookies="false">
                <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                    maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                <reliableSession ordered="true" inactivityTimeout="00:10:00"
                    enabled="false" />
                <security mode="TransportWithMessageCredential">
                    <transport clientCredentialType="None" proxyCredentialType="None"
                        realm="" />
                    <message clientCredentialType="Windows" negotiateServiceCredential="true" />
                </security>
            </binding>
        </wsHttpBinding>
    </bindings>
    <client>
        <endpoint address="https://anlocalip:9651/WebDataService" binding="wsHttpBinding"
            bindingConfiguration="WebDataServiceHttpBinding" contract="wcf1.IWebDataService"
            name="WebDataServiceHttpBinding">
            <identity>
                <dns value="localhost" />
            </identity>
        </endpoint>
    </client>
</system.serviceModel>

私はこのエラーから抜け出すことができません、誰かが私を助けることができますか?

4

2 に答える 2

0

クライアントのユニットに証明書をインストール/インポートする必要がある場合があります。

c#を使用してプログラムでローカルマシンストアに証明書をインストールするにはどうすればよいですか?
stackoverflow.com

MakeCertを介して生成された証明書があります。PeerTrustを使用したWCFメッセージセキュリティにこの証明書を使用したいと思います。c#または.NETを使用して、証明書を「信頼できる人」のローカルマシン証明書ストアにプログラムでインストールするにはどうすればよいですか?


C# stackoverflow.comのWindowsローカルユーザー証明書ストアに証明書をインストールします

サードパーティのWebサービスに接続するために証明書ストアにいくつかの証明書が必要なWindowsサービスを作成しています...


または、証明書を使用してサービスを保護します

方法:X.509証明書でサービスを保護する
msdn.microsoft.com

X.509証明書を使用してサービスを保護することは、Windows Communication Foundation(WCF)のほとんどのバインディングで使用される基本的な手法です。このトピックでは、X.509証明書を使用してセルフホストサービスを構成する手順について説明します。

于 2012-04-23T09:56:42.947 に答える
0

プロキシを開く前に、なりすましレベルを設定してみてください。

serviceProxy.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;
serviceProxy.Open();
于 2012-04-23T10:21:31.407 に答える