現在、Sharepoint 2007 で構築されたエンタープライズ コンテンツ管理システムを SharePoint 2010 に移行しています。このシステムには、カスタム フォーム ベースの認証プロバイダーとカスタム ロール プロバイダーが含まれています。ユーザーとロールのマッピングは、以下のように DB に保存されます。
ユーザー ID ロール ID サイト URL
21 15 www.sitea.com
21 10 www.siteb.com
22 15 www.sitea.com
ロール プロバイダーでは、現在のサイトで割り当てられているロールは、サイト URL を介して取得および設定されます。これは、次のように Initilize メソッドでロール プロバイダーのカスタム プロパティ (SiteURL という名前のプロパティなど) を設定することで解決されました。
SiteURL = SPContext.Current.Web.Url;
ただし、Sharepoint 2010 では、その行は使用できなくなりました。Sharepoint 2010 クレーム認証では、SecurityToken Web サービスという名前の別の Web サービスでカスタム ロール プロバイダーが呼び出されるためです。したがって、SPContext.Current は null です。
ここで、認証を要求しているサイトの URL を取得する別の方法を見つける必要があります。何か提案はありますか?