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()
この簡単な設定によって、WHR パラメーターが SharePoint から送られるようになります。
- 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」をご覧ください。