从已通过被动STS验证的网站传递现有SAML令牌的最佳方法是什么?
我们已经建立了一个身份提供商,该网站向网站发出被动声明以进行身份验证。我们有这个工作。现在我们想要添加一些WCF服务 - 从已经过身份验证的Web应用程序的上下文中调用它们。理想情况下,我们只想在不对其做任何事情的情况下传递SAML令牌(即添加新的声明/重新签名)。我见过的所有例子都需要ActAs sts实现 - 但这真的有必要吗?对于我们想要实现的目标,这似乎有点膨胀。
我会想到一个简单的实现将引导令牌传递到通道中 - 使用CreateChannelActingAs或CreateChannelWithIssuedToken机制(并设置ChannelFactory.Credentials.SupportInteractive = false)以正确的绑定调用WCF服务(那会是什么? )本来就够了。
我们使用Fabrikam示例代码作为参考,但正如我所说,认为ActAs功能对于我们想要实现的目标来说是过度的。
答案 0 :(得分:1)
在这种情况下,您需要将令牌的内容插入每个外发邮件中。如果您查看WIF Identity Training Toolkit,他们会有一个IssuedTokenHeader类来促进这一点(以及ClaimsIdentitySessionManager)。这些类是为Silverlight构建的,但它不会改变它们提供的解决方案。
以下是ClaimsIdentitySessionManager类的摘录。
using (OperationContextScope scope = new OperationContextScope(contextChannel))
{
IssuedTokenHeader header = new IssuedTokenHeader(this.TokenCache.GetTokenFromCache(serviceAppliesTo));
OperationContext.Current.OutgoingMessageHeaders.Add(header);
asyncOperation();
}