Partager via


將 SharePoint 2010 中的 SAML 宣告與主機標頭網站搭配使用

英文原文已於 2011 年 6 月 19 日星期日發佈

前些日子有人提出一個有趣的問題問我,是關於是否可以將 SAML 宣告與 SharePoint 2010 中的主機標頭網站搭配使用。我初步的想法是可以,但是我想要稍微再深入探討它。這一切的簡短答案為「是」,但它並不是像我想像中的如此容易。為了有一些範例可供說明,我在 https://hh.vbtoys.com 建立了一個網站應用程式,並建立兩個主機標頭網站:https://ash.vbtoys.comhttps://josh.vbtoys.com。雖然這無法完全符合主機標頭網站的傳統模式 (即無效 URL),請記住使用 SAML 宣告與 SharePoint 的其中一項限制就是網站必須使用 SSL。因此與其必須建立 SSL 憑證與「主體交替名稱」 (SAN),我決定稍微簡化程序,這樣我就可以使用萬用字元憑證。它足以證明它是否可運作以及需要何種設定,但是希望它也是一項很好的提醒,讓您可以考慮是否要使用主機標頭網站以及 SAML 驗證。

因此我先做了一個簡單的測試,只為了試試看在這個理想的方案中,我是否可以只進行一項設定變更,即可讓所有的主機標頭網站運作。在該情況下,我做了兩件事:

  1. 在使用 https://hh.vbtoys.com/_trust/ 做為 WS Fed 端點以及使用 urn:sharepoint:hh 的 URN 之 ADFS 中,建立新的信賴憑證者。
  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,而這一切都沒問題。我可以順利進入網站。接下來,在真正測試理想方案時,我點擊 https://ash.vbtoys.com。很不幸的是,它並不理想。最後會將頁面重新導向至完全不同的 SPTrustedIdentityTokenIssuer,因此我的猜測是,SharePoint 在「提供者領域」清單中執行查詢,但是找不到 https://ash.vbtoys.com 的相關資料,所以它只好擷取我清單中的第一個 SPTrustedIdentityTokenIssuer。

不過,這一切都沒有損失,此時您大概可以想像,我可以讓我的兩個主機標頭網站都運作,但是我必須建立:

  1. 每個主機標頭網站集合在 ADFS 中的新信賴憑證者
  2. 每個主機標頭網站集合的新提供者領域,並將它新增至我的 SPTrustedIdentityTokenIssuer。我使用與上方所顯示完全相同的 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