WCF 服务使用被动发布的 SAML token

标签 wcf saml wif

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

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

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

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

最佳答案

在这种情况下,您需要将 token 的内容插入到每条传出消息中。如果您查看 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();
}

关于WCF 服务使用被动发布的 SAML token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2872649/

相关文章:

c# - 如何硬编码 WCF 配置?

c# - WCF:如何通过 Datacontract 返回 .NET Framework 类?

authentication - 什么最适合与 CLI 工具的身份验证服务器交互?

java - opensaml 签名加密验证不成功

java - SAML - Java 中的服务提供者

C# - 带有 aspx 页面的 Web 服务

c# - WCF是否缓存存储过程

saml - WS-Trust、OpenID 和 SAML Passive 之间有什么区别?

wif - 为什么web客户端在使用WIFI时需要被动STS

active-directory - ADFS 2.0 - 如何调试 "401 - Unauthorized"