3

从已经通过被动 STS 进行身份验证的网站传递现有 SAML 令牌的最佳方式是什么?

我们已经建立了一个身份提供者,它向网站发出被动声明以进行身份​​验证。我们有这个工作。现在我们想将一些 WCF 服务添加到组合中 - 从已经过身份验证的 Web 应用程序的上下文中调用它们。理想情况下,我们只想传递 SAML 令牌而不对其进行任何操作(即添加新的声明/重新签名)。我看到的所有示例都需要 ActAs sts 实现——但这真的有必要吗?对于我们想要实现的目标,这似乎有点臃肿。

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

我们使用Fabrikam示例代码作为参考,但正如我所说,认为这里的 ActAs 功能对于我们想要实现的目标来说太过分了。

4

1 回答 1

1

在这种情况下,您需要将令牌的内容插入到每条传出消息中。如果您查看WIF 身份培训工具包,他们有一个 IssuedTokenHeader 类可以促进这一点(以及 ClaimsIdentitySessionManager)。这些类是为 Silverlight 构建的,但不会改变它们提供的解决方案。

这是 ClaimsIdentitySessionManager 类的摘录。

using (OperationContextScope scope = new OperationContextScope(contextChannel))
{
   IssuedTokenHeader header = new IssuedTokenHeader(this.TokenCache.GetTokenFromCache(serviceAppliesTo));
   OperationContext.Current.OutgoingMessageHeaders.Add(header);
   asyncOperation();
}
于 2010-07-08T13:08:17.613 回答