1

トランスポートとメッセージの両方のセキュリティと相互証明書認証を使用して、WCFサービス用のMetroベースのクライアントを作成しようとしています。

私は各モードを一緒にではなく個別に機能させています-つまり、メッセージセキュリティのみが機能し、本文が暗号化されてHTTP経由で送信されるか、SSLのみが機能し、メッセージは暗号化されません。両方をアクティブにすると、クライアントは暗号化されていないメッセージをSSL経由で送信します。

これは私の現在のバインディングです:

  <customBinding>
    <binding name="customBind">
      <transactionFlow />
      <security authenticationMode="MutualCertificate" allowSerializedSigningTokenOnReply="true" defaultAlgorithmSuite="Basic128" includeTimestamp="true" securityHeaderLayout="Lax">
      </security>
      <textMessageEncoding messageVersion="Soap11" />
      <httpsTransport requireClientCertificate="false"/>
      <!--<httpTransport />-->
    </binding>
  </customBinding>

httpTransportを使用すると、メッセージは暗号化されますが、httpsTransportを使用すると、暗号化されません。メッセージは暗号化されていないため、サーバーは「メッセージのセキュリティの検証中にエラーが発生しました。」と応答します。Metroクライアントが「com.sun.xml.wss.XWSSecurityException:セキュリティ要件が満たされていません-メッセージにセキュリティヘッダーがありません」で失敗します。

誰かがこれに遭遇したことがありますか?なぜこれが起こっているのか、または私が探求できる可能性のあることについての手がかりはありますか?追加情報:Netbeans7.1.1およびMetro2.2の使用。

4

1 に答える 1

2

wsdlからTransportBinding要素を削除し、MetroではなくJavaにトランスポートセキュリティを処理させることで、これを解決することができました。

于 2012-04-30T00:01:48.697 に答える