2010-09-12 80 views
7

我很想知道如何才能从已经通过WIF验证的WIF应用程序发送安全令牌给启用WIF的WCF服务。如何将(Claim)安全令牌传递给WIF启用WCF服务

任何援助将appriciated

+0

我希望你会得到一个答案。这是默认设计:Web App - > WCF服务。我们鼓励.Net开发者使用WIF,但我所看到的实施建议不是规定性的。 – 2010-10-01 15:52:14

回答

6

答案并不简单,但下面的步骤构成的“建议模式”和下面的MSDN文章中记载: Identity Delegation with AD FS 2.0 Step-by-Step Guide

总之

  1. 允许您的Web应用程序访问特殊令牌(Bootstrap令牌),该令牌可用于代表使用STS进行身份验证的用户请求服务,方法是添加一个i TEM在web.config:

    saveBootstrapTokens="true"

  2. 创建WCF WIF功能的服务和STS之间新的信任,因此“知道”是该服务可以作为另一个身份验证的用户(ActsAS)采取行动。 希望你使用ADFS v2,因为我想象用ActsA写一个自定义STS的所有管道是行不通的。

  3. 当调用WCF服务创建专门传递BootStap令牌的新渠道:

    channel = factory.CreateChannelActingAs(callerToken);

我有点担心的性能,因为所有频道创建的,以及如何WCF服务和Web应用程序需要与STS服务进行交谈。

0

@大卫埃文斯 - 我没有追加到你的答案的声望。但是,我相信最后一步是不正确的,并且可能非常混乱,因为您可以在ActingAs调用中有效地传递引导令牌。

问题是您声明您应该传递引导令牌。然而,发生的事情是,在建立ActAs信任的过程中,会创建ActAs \ Issued Token。该令牌不是引导令牌。事实上,您需要用户的引导令牌来创建这个新的令牌,它代表依赖派对作为特定的经过验证的用户。

因此,第二步是Create ActAs标记(涉及您提到的所有内容)。 第三步将使用ActAs令牌调用WCF服务,而不是引导令牌。

0

Microsoft使用WIF 4.5提供具有不同身份示例的Identity Traningskit。示例InvokingViaDelegatedAccess in there demonstrates perfectly the usage of the ActAs- delegation scenario. However, it cost me days to bring the InvokingViaDelegatedAccess`示例启动并运行。在做了很多解决方法之后,我终于能够运行设置并执行这个例子。我写了一个安装手册,你可以在这里下载:

enter link description here 享受))

的例子但是在具有的Visual Studio 2012安装在Windows 7虚拟机上运行。

这是正确的,你必须保存引导令牌。登录到Web应用程序后,必须首先缓存从SecurityTokenService发出的令牌。使用WIF 4.5这可以用在web.config以下命令来完成:

<identityConfiguration saveBootstrapContext="true"> 

的WCF的ChannelFactory具有然后不同的方法(CreateChannelWithActAsToken,CreateChannelWithIssuedToken,WithOnBehalfOfToken)从后端应用到WCF支撑委派方案服务。使用ActAs方案,CreateChannelWithActAsToken正在提取引导令牌,将引导令牌发送给STS,STS使用新(或复制)的声明值创建新的SecurityToken,然后使用ActAs- SecurityToken调用后端服务。使用此方法,每次调用服务时都会发布一个新的ActAs- SecurityToken。如果你不想这样做,CreateChannelWithIssuedToken可能会成为你的bether方法,因为你可以将缓存的标记缓存到一个cookie中,并重新用于其他调用。

/帕特里克·塞勒,开发.NET www.itconsulting24.com