我正在尝试将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,我可以将其用作令牌(因为这样会包含其他声明。)
答案 0 :(得分:2)
您在WCF层中执行相同的技术 - 使用ClaimsAuthenticationManager转换声明。