对 SharePoint 2010 和 SAML 身份验证使用 WHR 参数
原文发布于 2011 年 9 月 15 日(星期四)
我看到人们对 SharePoint 2010 SP1 和 6 月累积更新中旨在启用 WHR 参数的修补程序存有很多问题和困惑(我自己也有点迷惑)。事实上,现在它确实起作用,但需要进行一些改动:
- 配置 SPTrustedIdentityTokenIssuer
SPTrustedIdentityTokenIssuer 现在有一个名为 UseWHomeRealmParameter 的属性;必须将该属性设置为 True,SharePoint 才能将 WHR 参数传递给 IdP。下面是我用于执行此操作的一段简短的 PowerShell 代码:
$ap = get-sptrustedidentitytokenissuer -identity "ADFS with Roles"
$ap.UseWHomeRealmParameter = $true
$ap.Update()
非常简单 - 现在,SharePoint 将会发送它找到的任何 WHR 参数。
- 编写一些内容或执行某些操作来附加 WHR 参数
就我而言,我编写了一个 HttpModule 来附加 WHR 参数。下面是具体步骤:
- 在 Init 重写中,我为 BeginRequest 事件添加了一个处理程序
- 在 BeginRequest 事件代码中,我查看是否存在以下情况:
- 请求被定向到 _trust/default.aspx 并且
- 请求尚不包含 WHR 参数
- 如果请求满足上述两个条件,我将创建一个指向 _trust/default.aspx 的重定向。执行该操作时,我将:
- 添加之前已经存在的每个查询字符串参数
- 将我的 WHR 参数追加到末尾
- Response.Redirect 重定向到 _trust/default.aspx
就是这样。我使用 IE 中的 InPrivate 浏览器会话进行过测试,因为它不使用可能会丢弃测试结果的身份验证 Cookie。到目前为止,所有测试都符合预期 - 我还在 Fiddler 中进行了验证,发现 WHR 参数现在像预期的那样对 ADFS 没有影响(就我的情况而言)。我将这个简单的小项目的源代码附加到这篇文章中,以帮您起步。
这是一篇本地化的博客文章。请访问 Using the WHR Parameter with SharePoint 2010 and SAML Auth 以查看原文