Partager via


在 SharePoint 2010 與 SAML 驗證中使用 WHR 參數

英文原文已於 2011 年 9 月 15 日星期四發佈

我看了很多關於使用 SharePoint 2010 SP1 的修正程式搭配 6 月份 CU 來使用 WHR 參數的問題與誤解 (我自己也有一點混亂了)。實際上,這樣的做法可行,但還需要一些條件:

  1. 設定 SPTrustedIdentityTokenIssuer

SPTrustedIdentityTokenIssuer 現在有一個稱為 UseWHomeRealmParameter 的屬性;該屬性必須設為 True,SharePoint 才能將 WHR 參數傳遞至 IdP。以下是我用來執行此操作的簡短 Powershell 程式碼片段:

$ap = get-sptrustedidentitytokenissuer -identity "ADFS with Roles"
$ap.UseWHomeRealmParameter = $true
$ap.Update()

非常簡單,現在 SharePoint 將會傳送找到的任何 WHR 參數。

  1. 撰寫命令或執行某些動作以附加 WHR 參數

在我的案例中,我撰寫了 HttpModule 以附加 WHR 參數。具體的做法如下:

  • 在 Init override 中,我新增了 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