2010-05-20 45 views
3

从已经通过被动STS认证的网站传递现有SAML令牌的最佳方式是什么?WCF服务被动地发布SAML令牌

我们已经建立了一个身份提供商,它向网站发布被动声明以进行身份​​验证。我们有这个工作。现在我们想添加一些WCF服务 - 从已经通过身份验证的Web应用程序的上下文中调用它们。理想情况下,我们只想传递SAML令牌而不做任何事情(即添加新的声明/重新签名)。我见过的所有例子都要求ActAs sts的实施 - 但这真的有必要吗?这似乎有点臃肿,我们想要实现的。

我会想到一个简单的实现将引导令牌传递到通道中 - 使用CreateChannelActingAs或CreateChannelWithIssuedToken机制(并设置ChannelFactory.Credentials.SupportInteractive = false)以正确的绑定调用WCF服务(那会是什么?)本来就够了。

我们使用Fabrikam示例代码作为参考,但正如我所说的,认为这里的ActAs功能对于我们试图达到的目标来说是过度的。

回答

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