SharePoint 2010 および SAML 認証での WHR パラメーターの使用

原文の記事の投稿日: 2011 年 9 月 15 日 (木曜日)

SharePoint 2010 SP1 および 6 月の累積的な更新プログラムにおける修正 (WHR パラメーターを使えるようにするための修正) に関して多くの疑問や混乱が生じているようです。これは現段階で正常に機能していますが、それを利用するにはいくつかの要件を満たす必要があります。

  1. SPTrustedIdentityTokenIssuer を構成する。

SPTrustedIdentityTokenIssuer に UseWHomeRealmParameter というプロパティが追加されました。このプロパティを true に設定しないと、SharePoint は WHR パラメーターを受け取って IdP に引き渡すことをしません。これを設定する簡単な PowerShell スニペットを紹介します。

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

この簡単な設定によって、WHR パラメーターが SharePoint から送られるようになります。

  1. WHR パラメーターを付加するために "何か" を作成するか実行する。

私は、WHR パラメーターを付加する HttpModule を作成しました。私が行った方法は次のとおりです。

  • Init オーバーライドに BeginRequest イベントを処理するハンドラーを追加する。
  • BeginRequest イベントを処理するコードで以下の条件を確認する。
    • 要求の宛先が _trust/default.aspx である。かつ
    • 要求にまだ WHR パラメーターが含まれていない。
  • 要求が上の 2 つの条件を満たした場合にリダイレクトを作成して _trust/default.aspx に戻ります。この時点で次のことを行います。
    • 以前からあったクエリ文字列パラメーターをすべて追加する。
    • WHR パラメーターを最後に追加する。
    • Response.Redirect から _trust/default.aspx に戻る。

処理内容は以上です。これをテストするために IE の InPrivate ブラウザー セッションを使いました。これを使えば、認証 Cookie によってテスト結果が破棄されることがないからです。これまでのところ、テストは予想どおりすべてうまくいっています。WHR パラメーターが期待どおり ADFS (今回の私の例の場合) に渡されていることを Fiddler でも確認しました。ごく簡単なプロジェクトですが、ソース コードを添付したので参考にしていただければ幸いです。

これはローカライズされたブログ投稿です。原文の記事は、「Using the WHR Parameter with SharePoint 2010 and SAML Auth」をご覧ください。