2016-09-22 31 views
0

basicHttpBinding、メッセージセキュリティモード、および証明書クライアントの資格情報タイプを持つwcfサービスがあります。私はwcfクライアント経由でこのサービスを利用することができますが、このサービスはJavaクライアントを持つ別のシステムでも使用する必要があります。私はsoapuiでテストしていますが、空の応答またはセキュリティ・メッセージ・エラーが発生します。私はクライアント証明書を読み込むためにさまざまなsoapui設定を試みましたが、これらのどれもうまくいきませんでした。私はhttp(非https)経由でサービスを公開しました。これはサーバーwcf設定です。クライアント証明書認証を使用するWcfがsoapuiで動作しない

<system.serviceModel> 
    <bindings> 
     <basicHttpBinding> 
     <binding name="basicEndPoint" closeTimeout="00:01:00" openTimeout="00:01:00" 
       receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" 
       bypassProxyOnLocal="false" maxBufferSize="2147483647" maxBufferPoolSize="2147483647" 
       maxReceivedMessageSize="2147483647" messageEncoding="Text" textEncoding="utf-8" 
       transferMode="Buffered" useDefaultWebProxy="true"> 
      <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" 
         maxArrayLength="2147483647" maxBytesPerRead="2147483647" 
         maxNameTableCharCount="2147483647"/> 
      <security mode="Message"> 
      <message clientCredentialType="Certificate" /> 
      </security> 
     </binding> 
     </basicHttpBinding> 
    </bindings> 
    <behaviors> 
     <endpointBehaviors> 
     <behavior name="customBehavior"> 
      <clientCredentials> 
      <clientCertificate findValue="ClientSide" x509FindType="FindBySubjectName" storeLocation="LocalMachine" storeName="My"/> 
      <serviceCertificate> 
       <defaultCertificate findValue="ServerSide" x509FindType="FindBySubjectName" storeLocation="LocalMachine" storeName="My"/> 
       <authentication certificateValidationMode="PeerOrChainTrust"/> 
      </serviceCertificate> 
      </clientCredentials> 
     </behavior> 
     </endpointBehaviors> 
    </behaviors> 
    <client> 
     <endpoint address="http://localhost:8080/WebServices/ExternalServices.svc" 
     behaviorConfiguration="customBehavior" binding="basicHttpBinding" 
     bindingConfiguration="basicEndPoint" contract="ServiceReference1.IExternalServices" 
     name="BasicHttpBinding_IExternalServices" > 
     <identity> 
      <certificateReference findValue="ServerSide" storeName="My" storeLocation="LocalMachine" x509FindType="FindBySubjectName" /> 
      <dns value="ServerSide"/> 
     </identity> 
     </endpoint> 
     <endpoint address="mex" 
       binding="mexHttpBinding" 
       contract="IMetadataExchange"/> 
    </client> 
    </system.serviceModel> 

この設定で何が問題になっていますか?設定に基づいて:(Pさえないユーザー)が、:事前

答えて

0

で おかげで、私はWCF専門家ではない

<endpointBehaviors> 
    <behavior name="customBehavior"> 
     <clientCredentials> 
     <clientCertificate findValue="ClientSide" x509FindType="FindBySubjectName" storeLocation="LocalMachine" storeName="My"/> 
     <serviceCertificate> 
      <defaultCertificate findValue="ServerSide" x509FindType="FindBySubjectName" storeLocation="LocalMachine" storeName="My"/> 
      <authentication certificateValidationMode="PeerOrChainTrust"/> 
     </serviceCertificate> 
     </clientCredentials> 
    </behavior> 
</endpointBehaviors> 

サーバーのエンドポイントをヒットするために、証明書クライアントの資格情報を提示しなければならないようです。

SOAPUIからサービスを呼び出すには、まずクライアントが証明書の資格情報を提示するためにhttpsを使用してサービスを公開します。第二のconfigure SOAPUIエンドポイントにクライアント証明書を送信するために従うよう:

メニューから[ファイル]> [プリファレンス、その後、SSLの設定を選択します。このパネルでは、サービスのための有効なクライアントキーと証明書を含むキーストアを選択し、キーストアのパスワードを入れて、必要に応じて必要なクライアント認証をマーク:

enter image description here

注:コンフィグレーションに基づいて:

<clientCertificate findValue="ClientSide" 
      x509FindType="FindBySubjectName" storeLocation="LocalMachine" storeName="My"/> 

有効なクライアント証明書は、サーバーのWindowsローカルキーストアにある証明機関で発行されたエンドエンティティ証明書である必要があります。

+0

ご返信ありがとうございます。私はすでにこれらの構成を試みました。 basichttpbindingを使用する前に、私はhttpsでwshttpbindingを設定し、成功しなくてもキーストアとパスワードを選択しました。 googling私は、wshttpbindingは非常に相互運用性ではないので、私はbasichttpbindingに変更し、httpsなしで試してみました。私は、wcfクライアントとの互換性だけでなく、soap wcf認証証明書を使ってサービスを開発する方法についていくつかの公式ガイドラインがあるかどうか知りたいのです。 – VariableName

+0

@VariableName私はPKI、SSLなどについていくつかの知識を持っています。しかし、私が答えて言ったように、* WCF *との具体的な経験はありません* ...私は主題に確かにgudelinesがあると思いますが、それを見つける場所を知っている、残念。 – albciff

0

クライアント証明書認証を使用してWCFテスト用のSOAPUIをセットアップするのは苦労しました。最後に私はそれを働かせました。 SNIサポートの問題、未署名の「To」ヘッダーGetting WCF to accept unsigned 'To' Headerなどのような、異なる問題に直面しました。

WCFトレースを有効にすることをお勧めします。サーバー上で詳細なエラー情報を入手することができます:https://msdn.microsoft.com/en-us/library/ms732023(v=vs.110).aspxこれは簡単にトラブルシューティングできます。

+0

ようこそStackOverflowへ!あなたのリンクからあなたの答えに関連する資料をコピーすることをお勧めします。リンクが変わっても答えがまだ役立つようにしてください – DeadChex

関連する問題