サービス間のルーティング機能を構築しています。元のサービスとルーティングを行うサービスの構成は同じです。両方とも、次のバインド構成で netTcpBinding を使用しています。
netTcpバインディング
セキュリティ モード="メッセージ"
メッセージ clientCredentialType="UserName"
サービスの動作では、マシンにインストールした AspNet メンバーシップ プロバイダーとクライアント証明書を使用します。
メッセージセキュリティをオフにすると問題なく中継されますが、オンにすると次の例外が発生します。
「メッセージを処理できませんでした。これは、アクション ' http://foo/Whatever ' が正しくないか、メッセージに無効または期限切れのセキュリティ コンテキスト トークンが含まれているか、またはバインディング間に不一致があるためである可能性があります*。セキュリティ非アクティブのためにサービスがチャネルを中止した場合、コンテキスト トークンは無効になります。サービスがアイドル セッションを途中で中止しないようにするには、サービス エンドポイントのバインディングの受信タイムアウトを早めに増やしてください。(私のものを強調)
私の考えでは、証明書がメッセージに対して 2 回 (1 回は元の呼び出しで、次にリレーで) 動作しており、これがメッセージのセキュリティ トークンを破損させているのです。
質問:
私の考えは的を射ていますか?
トークン サービスの複雑さなしにルーティングにメッセージ セキュリティを使用し続ける方法はありますか?