私の現在のタスクは、WCF サービスを保護することです。サービスは構成フレームワーク (5.5、StockTraider サンプルでリリース) を使用してホストされ、呼び出し元も構成フレームワークを使用します。
ws2007FederationHttpBinding を使用して接続を保護することができました。
「IsOnline()」については、STS がサービス トークンを発行していることを確認してください。これは既に機能していますが、実際のサービス呼び出しについては、呼び出されたサービス内の実際のユーザーを引き続き知るために、ActAs-Tokens が必要です。
私の STS は正しい ActAs-Token を発行できます。
問題は負荷分散クライアントです。これは常にファクトリを開き、WIF メソッド (ConfigureChannelFactory() および CreateChannelActingAs()) を呼び出せません。これは、ファクトリが作成された状態である必要があるためです。
私の最善の試みはこれですが、どこかで ActAs-Subject を失い、ハックのように感じます:
IPSServiceClient = new Client(serviceName, settingsInstance, createNewChannelInstance: true);
var token = ((IClaimsIdentity)Thread.CurrentPrincipal.Identity).BootstrapToken;
var factoryObject = IPSServiceClient.createANewChannelFactoryByAddress(IPSServiceClient.getANodeAddress());
var factory = factoryObject as ChannelFactory<IIWBPortalServiceV1>;
factory.ConfigureChannelFactory(); //factory must not be state=open here
factory.Credentials.SupportInteractive = false; //no cardspace
_channel = factory.CreateChannelActingAs(token);
構成フレームワークの拡張ポイントを見逃していませんか? 私が行くべき最善の方法は何ですか?
新しいコンソール アプリを作成し、サービス参照を追加して、2 つの呼び出し (ConfigureChannelFactory() と CreateChannelActingAs()) を追加すると、うまくいきます。