5

JAX-WS を使用して WebService を作成し、そのようなバインディングを使用して WCF クライアントによって消費されることは可能ですか?

<bindings>
        <basicHttpBinding>
            <binding name="CaseObjectServicePortBinding" >
                <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                    maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                <security mode="TransportWithMessageCredential">
                    <transport clientCredentialType="Certificate"/>
                    <message clientCredentialType="Certificate" />
                </security>
            </binding>

        </basicHttpBinding>
    </bindings>

今のところ、WSIT を使用せずに単純なサービスを作成し、着信 SOAP メッセージの "Security" ヘッダーを無視したいと考えていました。しかし、それは失敗します:

「権限 'xxxxxxxxxx' で SSL/TLS の安全なチャネルを確立できませんでした。」

私が変更した場合:

<security mode="TransportWithMessageCredential">
                    <transport clientCredentialType="Certificate"/>
                    <message clientCredentialType="Certificate" />
                </security>

に:

<security mode="Transport">
                    <transport clientCredentialType="Certificate"/>
                    <message clientCredentialType="Certificate" />
                </security>

すべてが問題なく動作します。私が間違っていることは何ですか?

4

3 に答える 3

0

TransportWithMessageCredentialあなたが言うようにセキュリティを定義するとき:私は、セキュリティで保護されたトランスポート チャネル (HTTPS) を介して通信するサービスが必要であり、SOAP ヘッダーでクライアント資格情報を渡したいと考えています。

message 要素で Certificate クレデンシャル タイプを定義すると、次のようになります。SOAP ヘッダーは、クライアントのクレデンシャルを x.509 Certificate トークン プロファイルとして転送します。サービス上で WS-Security を必要とする相互運用可能な形式です。

トランスポート要素で Certifiate クレデンシャル タイプを定義すると、次のようになります。相互 SSL 認証が必要です。定義した場合、これが使用されるかどうかは実際にはわかりませんTransportWithMessageCredential

于 2011-05-14T12:22:34.310 に答える
0

答えはイエスです。BasicHttpBinding または WsHttpBindingを使用できます

TransportWithMessageCredentialを使用すると、WCF クライアントは、WCF サービスに対してのみ相互運用可能なネットワーク経由で送信されるメッセージに追加のセキュリティを課すため、エラーが発生しました。

Transportに変更すると、トランスポート セキュリティ (証明書を使用した SSL) のみが適用されるため、クライアントとサービスの両方が相互に通信する方法を理解できるようになります。

乾杯。

于 2011-05-14T12:14:25.163 に答える