【问题标题】:WCF service consuming passively issued SAML tokenWCF 服务使用被动发布的 SAML 令牌
【发布时间】:2011-02-21 19:01:58
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: wcf saml wif


    【解决方案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();
    }
    

    【讨论】:

      猜你喜欢
      • 2012-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-13
      • 2015-02-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多