Wcf 配置框架和WIF联合+;委托:需要factory.CreateChannelActingGas(令牌)

Wcf 配置框架和WIF联合+;委托:需要factory.CreateChannelActingGas(令牌),wcf,wif,federated-identity,Wcf,Wif,Federated Identity,我当前的任务是保护WCF服务。该服务使用配置框架(5.5,与StockTraider示例一起发布)托管,调用方也使用配置框架 我设法使用ws2007FederationHttpBinding保护连接 对于“IsOnline()”-检查我的STS发出了一个服务令牌,这已经起作用了,但是对于实际的服务调用,我希望有ActAs令牌,以便仍然知道被调用服务中的真实用户 我的STS能够发行正确的ActAs代币 问题在于负载平衡客户端,它总是打开工厂,我不能再调用WIF方法(ConfigureChannel

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

我设法使用ws2007FederationHttpBinding保护连接

对于“IsOnline()”-检查我的STS发出了一个服务令牌,这已经起作用了,但是对于实际的服务调用,我希望有ActAs令牌,以便仍然知道被调用服务中的真实用户

我的STS能够发行正确的ActAs代币

问题在于负载平衡客户端,它总是打开工厂,我不能再调用WIF方法(ConfigureChannelFactory()和CreateChannelActingGas()),因为它们要求工厂处于创建状态

我的最佳尝试是这样,但它在某个地方放松了ActAs主题,感觉像一个黑客:

IPSServiceClient=newclient(serviceName,settingsInstance,createNewChannelInstance:true);
var-token=((IClaimsIdentity)Thread.CurrentPrincipal.Identity).BootstrapToken;
var factoryObject=IPSServiceClient.createANewChannelFactoryByAddress(IPSServiceClient.getanodeadress());
var factory=factoryObject作为ChannelFactory;
ConfigureChannelFactory()//工厂不得在此处处于state=打开状态
factory.Credentials.SupportInteractive=false//无卡空间
_channel=factory.CreateChannelActingGas(令牌);
我是否错过了配置框架中的扩展点?我该走哪条路最好


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

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

不过:我觉得发布的代码像是黑客

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);