在声明环境中正确地针对 WCF 服务进行身份验证
Posted
技术标签:
【中文标题】在声明环境中正确地针对 WCF 服务进行身份验证【英文标题】:Properly authenticating against WCF service in a Claims environment 【发布时间】:2011-07-19 22:26:02 【问题描述】:声明身份验证模式下的 SharePoint Web 应用程序支持 NTLM,但只能通过以下步骤:
-
HTTP 302 重定向到第二个位置。
NTLM 身份验证的 HTTP 401 质询
HTTP 401 验证
HTTP 302 重定向回原始位置(服务)
我可以编写自定义行为、通道工厂或绑定来处理这个问题吗?有没有更好的方法来解决这个问题?
【问题讨论】:
我不是 100% 确定,但 c2WTS 不应该解决这个问题吗? 如果身份验证确实由身份模型库处理,我认为 C2WTS 是服务端的一种可能途径。在我看来,两个主要选项是使用声明进行身份验证,或者以某种方式禁用一个文件/地址的声明,并让服务接收 NTLM 标头。我觉得前者更好。跨度> 【参考方案1】:您列出的是标准 NTLM 握手。
避免这种情况的一种方法是使用 Kerberos 而不是 NTLM。见:http://technet.microsoft.com/en-us/library/gg502594.aspx
【讨论】:
如果 Kerberos 工作,这是一种选择,但从我在 IdentityModel 源代码中看到的情况来看,在实际身份验证发生之前仍然会重定向到第二个位置。似乎带有 NTLM 传输身份验证的 basicHttpBinding 无法理解/传递联邦 cookie #2 结果。但更紧迫的是:我不知道如何让 WCF 客户端移过实际上是 #1在 SharePoint 的情况下是 403,而不是 302。以上是关于在声明环境中正确地针对 WCF 服务进行身份验证的主要内容,如果未能解决你的问题,请参考以下文章
在声明身份验证的 SharePoint 2010 中托管的 WCF 服务中的模拟