在Web和wcf层之间使用WIF 4.5进行身份委派,并使用ClaimsAuthenticationManager添加自定义声明

时间:2013-10-15 16:25:31

标签: wif claims-based-identity acs federated-identity thinktecture-ident-server

我正在尝试将Web层的声明委托实现到WCF层。

使用从ClaimsIdentity BootstrapContext获得的ActAs令牌可以很好地工作。

从ACS在Web层接收的所有声明均正确传递到WCF层。

此设置类似于此处记录的内容:

http://msdn.microsoft.com/en-us/library/ee517269.aspx (但我相信这个具体的例子与WIF 4有关。)

但是,我还需要丰富收到的索赔,以添加我们自己的内部索赔。我使用ClaimsAuthenticationManager执行此操作。

这与此处记录的类似: http://msdn.microsoft.com/en-us/library/system.security.claims.claimsauthenticationmanager.aspx

这样可以正常工作,然后添加的附加声明可以在Web应用程序的各个区域内的ClaimsIdentity中使用。

然而,这些不是作为从ClaimsIdentity.BootstrapContext获得的令牌传递的。

我理解这是因为BootstrapContext包含收到的原始声明,因此不包含我添加的其他内部声明。

我还需要一些方法,以便将这些内部添加的声明传递给actas令牌中的WCF层。

有没有办法让BootstrapContext也包含我正在添加的声明,或者是否有一种方法可以从Currrent ClaimsIdentity / Principle生成一个SecurityToken,我可以将其用作令牌(因为这样会包含其他声明。)

1 个答案:

答案 0 :(得分:2)

您在WCF层中执行相同的技术 - 使用ClaimsAuthenticationManager转换声明。