AllowinsecureTransport = trueを使用したWCFサービスバインディングは
-
04-10-2019 - |
質問
これは、web.configでの私のサービス構成です:
<binding name="statefulSessionWithUsernameOverTransport">
<security authenticationMode="SecureConversation"
requireSecurityContextCancellation="False" allowInsecureTransport="True">
<secureConversationBootstrap authenticationMode="UserNameOverTransport"/>
</security>
<binaryMessageEncoding />
<httpTransport />
</binding>
<service name="com.example.FooService"
behaviorConfiguration="usernamePasswordAuthBehavior">
<endpoint contract="com.example.FooService.IFooService"
address="custom" binding="customBinding"
bindingConfiguration="statefulSessionWithUsernameOverTransport" />
</service>
私は、制作中にサービスがSSL終了ロードバランサーの背後で実行されるため、AllowinsecureTransport = trueを設定しています。 .NET 4.0クライアントからサービスを呼び出すことは問題なく動作しますが、VS2010でサービスリファレンスを更新しようとすると、常にエラーが発生します。
System.ServiceModel.Channels.TransportSecurityBindingElementエラー:セキュリティポリシーのエクスポートは失敗しました。このバインディングには、輸送セキュリティバインディングの電子が含まれていますが、iTransporttokenAssertionProviderを実装する輸送セキュリティ結合要素は含まれていません。このようなポリシーエクスポートのポリシーエクスポートはサポートされていません。*
私はそれが私に何を伝えようとしているのかを理解しています - これは基本的に、ワイヤーを走行する資格情報の侵害を避けるためにそれを必要とするバインディングで輸送セキュリティを無効にしたことです。しかし、それが全体のポイントです AllowinsecureTransport. 。プロキシジェネレーターがこの属性を単に認識していないのでしょうか?
アップデート:
WSDLジェネレーターは実際に属性を処理できないようです。メッセージレベルのセキュリティと開発のための自己署名証明書に戻る必要がありました。メッセージセキュリティを使用すると、完全に吹き飛ばされたIISになるのではなく、開発のためにカッシーニに固執できるという利点がありました。
<wsHttpBinding>
<binding name="wshttpDevelopmentBinding">
<security mode="Message">
<message clientCredentialType="UserName" />
</security>
</binding>
</wsHttpBinding>
解決
私はこの同じ問題に出くわしました。問題は、itransporttokenAssertionProviderインターフェイスを実装していないため、HTTPトランスポートのようですが、HTTPSはそうです。この2つの方法を回避することができました。カスタムバインディングを切り替えてインターフェイスを実装し、enableUnsecuredResponse = "true"を構成のセキュリティ要素に追加するか、httptransportbindelementから派生したカスタムバインディングを記述しますが、実装しますが、実装します。必要なインターフェイス。
他のヒント
私は同様の問題に遭遇しました。クライアントマシンに.NETフレームワーク3.5のHot Fixをインストールしましたが、その後機能しました。