Partilhar via


通过主机标头站点在 SharePoint 2010 中使用 SAML 声明

原文发布于 2011 年 6 月 19 日(星期日)

前几天,有人发帖向我问了一个这样有趣的问题,您是否会在 SharePoint 2010 中的主机标头网站中使用 SAML 声明。当时,我的第一反应就是回答会,但我想稍微深入点来研究这个问题。虽然很快就可以做出肯定的回答,但这完全不像我想的那样简单。下面,我用一个小示例来解释一下,我在 https://hh.vbtoys.com 上创建了一个 Web 应用程序,另外,还创建了两个主机标头网站:https://ash.vbtoys.comhttps://josh.vbtoys.com。尽管这与主机标头网站的典型模型(虚 Url)不是完全吻合,但别忘了,SAML 声明和 SharePoint 的限制之一就是网站必须使用 SSL。因此,我没有费力去创建具有使用者替代名称 (SAN) 的 SSL 证书,而是决定采取稍微简单点的方法,因此,我使用了通配符证书。这对于证明该方法是否可行以及它需要哪些配置完全足够了,但是,如果您要使用主机标头网站和 SAML 身份验证,在理想的情况下,它也可以有效地提醒您要考虑的事情。

因此,我首先做了一个简单的测试,试用了 utopia 方案,在该方案中,我只需更改一次配置就能让所有主机标头网站正常工作。在此情况下,我执行了两个操作:

  1. 在 ADFS 中创建了一个将 https://hh.vbtoys.com/_trust/用作 WS Fed 终结点的新信赖方和一个 urn:sharepoint:hh URN。
  2. 将一个提供程序领域添加到现有的 SPTrustedIdentityTokenIssuer 中,如下所示:

$ap = Get-SPTrustedIdentityTokenIssuer -identity "ADFS IdP"
$uri = new-object System.Uri("https://hh.vbtoys.com")
$ap.ProviderRealms.Add($uri, "urn:sharepoint:hh")
$ap.Update()

此时,我首先尝试点击了 https://hh.vbtoys.com,一切正常。我顺利进入了该网站。然后,在 utopian 方案的实际测试中,我点击了 https://ash.vbtoys.com。遗憾的是,它不是 utopian。最后,我跳转到了完全不同的 SPTrustedIdentityTokenIssuer,因此我猜想,SharePoint 在其提供程序领域列表中进行了查找,但没有找到 https://ash.vbtoys.com 的任何内容,因此,它就捕获了列表中的第一个 SPTrustedIdentityTokenIssuer。

但并非全盘皆失,正如此时您可能会想到的那样,我能让我创建的两个主机标头网站运行了,不过,我必须创建:

  1. ADFS 中用于每个主机标头网站集的新信赖方
  2. 每个主机标头网站集对应一个新的提供程序领域,将它添加到 SPTrustedIdentityTokenIssuer。我使用的 PowerShell 与我前面演示的 PowerShell 完全相同,只是为它们修改了 Url 和 Urn。例如,下面的示例将演示如何添加对 https://ash.vbtoys.com 的支持:

$ap = Get-SPTrustedIdentityTokenIssuer -identity "ADFS IdP"
$uri = new-object System.Uri("https://ash.vbtoys.com")
$ap.ProviderRealms.Add($uri, "urn:sharepoint:ash")
$ap.Update()

最后,我将为每个主机标头网站集添加新的信赖方和新的提供程序领域(Uri 和 Urn)。完成此操作后,我就能通过 SAML 身份验证登录每个网站了。

这是一篇本地化的博客文章。请访问 Using SAML Claims in SharePoint 2010 with Host Header Sites 查看原文