1

サービス間のルーティング機能を構築しています。元のサービスとルーティングを行うサービスの構成は同じです。両方とも、次のバインド構成で netTcpBinding を使用しています。

netTcpバインディング

セキュリティ モード="メッセージ"

メッセージ clientCredentialType="UserName"

サービスの動作では、マシンにインストールした AspNet メンバーシップ プロバイダーとクライアント証明書を使用します。

メッセージセキュリティをオフにすると問題なく中継されますが、オンにすると次の例外が発生します。

「メッセージを処理できませんでした。これは、アクション ' http://foo/Whatever ' が正しくないか、メッセージに無効または期限切れのセキュリティ コンテキスト トークンが含まれているか、またはバインディング間に不一致があるためである可能性があります*。セキュリティ非アクティブのためにサービスがチャネルを中止した場合、コンテキスト トークンは無効になります。サービスがアイドル セッションを途中で中止しないようにするには、サービス エンドポイントのバインディングの受信タイムアウトを早めに増やしてください。(私のものを強調)

私の考えでは、証明書がメッセージに対して 2 回 (1 回は元の呼び出しで、次にリレーで) 動作しており、これがメッセージのセキュリティ トークンを破損させているのです。

質問:

  1. 私の考えは的を射ていますか?

  2. トークン サービスの複雑さなしにルーティングにメッセージ セキュリティを使用し続ける方法はありますか?

4

1 に答える 1

1

セキュリティなしとメッセージ セキュリティの切り替えについて言及しました。WCF サービス エンドポイントと受信側のエンドポイントの両方を確実に変更していますか? そうでない場合、および 2 つが一致しない場合は、エラーが発生します。それが、そのエラーが私に言っているようです。

質問 2 では、どのような環境で実行していますか? 暗号化と署名を使用できるクローズド システム、または特別なキーを使用する必要がある可能性のある公開環境ですか?

于 2008-09-24T14:56:18.387 に答える