SharePoint 2010 のホスト ヘッダー サイトで SAML クレームを使用する
原文の記事の投稿日: 2011 年 6 月 19 日 (日曜日)
先日、ある方から興味深い質問が寄せられました。SharePoint 2010 のホスト ヘッダー サイトで SAML クレームを使えるかどうかというものです。当初は可能だと思ったのですが、少し掘り下げて調査する必要性を感じました。結論を先に言うと答えは「イエス」ですが、期待していたほど楽な操作ではありませんでした。確認のため、略式のサンプルとして Web アプリケーションを https://hh.vbtoys.com に作成し、2 つのホスト ヘッダー サイトを https://ash.vbtoys.com と https://josh.vbtoys.com に作成しました。これは従来のホスト ヘッダー サイト モデル (含意のあるバニティ URL) にそぐわないものですが、SAML クレームと SharePoint には SSL をサイトで必ず使用するという制限があることを思い出してください。とはいえ、サブジェクト代替名 (SAN) を使って SSL 証明書を作成するのは非常に面倒なので、この方法の代わりにワイルドカード証明書を使って手順を少し簡略にしました。この方法でも動作を確認し、必要な構成を判断するには十分ですし、そのうえホスト ヘッダー サイトと SAML 認証を使用する場合の注意事項についても理解できる材料が得られます。
さて、構成を一度変更しただけですべてのホスト ヘッダー サイトが期待どおりに動作するという夢のシナリオを試すために簡単なテストを実施しました。ここで行ったのは、次の 2 つの操作です。
- https://hh.vbtoys.com/_trust/を WS Fed エンドポイントとして使用し、urn:sharepoint:hh の URN を使用する新しい証明書利用者を ADFS に作成します。
- 以下のようにプロバイダー領域を既存の 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 を採用したようです。
しかし、希望がないわけではありません。既にお気付きかもしれませんが、両方のホスト ヘッダー サイトを機能させる方法は存在します。そのために、次の操作が必要です。
- ホスト ヘッダー サイト コレクションごとに新しい証明書利用者を ADFS に作成します。
- ホスト ヘッダー サイト コレクションごとに新しいプロバイダー領域を作成し、それを 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」をご覧ください。