配置框架和WIF联盟+委托:需要factory.CreateChannelActingAs(令牌)

时间:2013-01-10 08:19:01

标签: wcf wif federated-identity

我目前的任务是保护WCF服务。该服务使用配置框架(5.5,与StockTraider示例一起发布)托管,调用者也使用配置框架。

我设法使用ws2007FederationHttpBinding保护连接。

对于“IsOnline()” - 检查我的STS是否发出服务令牌,这已经有效但是对于实际的服务调用,我希望ActAs-Tokens仍然知道被叫服务中的真实用户。

我的STS能够发出正确的ActAs-Tokens。

问题是负载均衡客户端,它总是打开工厂,我不能再调用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);

我是否错过了配置框架中的扩展点?我应该去的最佳方式是什么?

如果我创建一个新的控制台应用程序,添加服务引用并添加两个调用(ConfigureChannelFactory()和CreateChannelActingAs())它就可以了!

1 个答案:

答案 0 :(得分:0)

我的问题中发布的代码有效。问题是在ActAs - AudienceUris部分内缺少securityTokenHandlers的STS的web.config。

仍然:发布的代码对我来说就像是一个黑客。