1

我当前的任务是保护 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()),它就可以工作了!

4

1 回答 1

0

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

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

于 2013-01-10T10:16:53.953 回答