1

私の現在のタスクは、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()) を追加すると、うまくいきます。

4

1 に答える 1

0

私の質問内に投稿されたコードは機能します。問題は、STS の web.config でAudienceUris、ActAs-securityTokenHandlersセクション内にありませんでした。

まだ: 投稿されたコードは、ハックのように感じます。

于 2013-01-10T10:16:53.953 に答える