SharePoint Foundation で Web パーツを展開する
最終更新日: 2015年3月9日
適用対象: SharePoint Foundation 2010
この記事の内容
展開に関する考慮点
セキュリティ権限に関する考慮点
Web パーツ アセンブリに厳密な名前を付ける
SafeControl エントリの作成
.Webpart ファイルの作成
Microsoft SharePoint Foundation では、Web パーツを Web ページに追加する前に、Web パーツを Web パーツ ギャラリーに展開する必要があります。このセクションでは、bin フォルダーとグローバル アセンブリ キャッシュ (GAC) の違い、セキュリティ権限に関する考慮点、アセンブリに展開用の厳密な名前を付ける方法、SafeControl エントリの作成方法、および Web パーツ定義ファイルを作成して Web パーツを展開する方法について説明します。
展開に関する考慮点
SharePoint サイト内には、Web パーツ アセンブリを展開できる場所が複数あります。
ソリューション ギャラリー - ソリューション ギャラリーは、サンドボックス ソリューションを使用して Web パーツを展開する場所としてお勧めします。ここでは、Web パーツの監視とセキュリティが既定で提供されます。サンドボックス ソリューションの詳細については、「サンドボックス ソリューション」を参照してください。
bin ディレクトリ - bin ディレクトリは、Web アプリケーションのルート ディレクトリに格納されるフォルダーです。このフォルダーの場所は、インターネット インフォメーション サービス (IIS) で Web サイトが作成されるときに決まります。SharePoint Foundation では、サーバーの全体管理サイトを使用するか、IIS マネージャーで新しい Web サイトを手動で作成することで、IIS で Web サイトを作成できます。
重要 bin ディレクトリが存在しない場合は、手動で作成する必要があります。Web パーツは、ローカルの _app_bin ディレクトリに格納しないでください。このディレクトリは、Microsoft 用に予約されています。
詳細については、「[方法] Web アプリケーション ルートを調査する」を参照してください。
- グローバル アセンブリ キャッシュ - 署名されたアセンブリを展開できるグローバルな場所です。グローバル アセンブリ キャッシュを使用すると、多数のアプリケーションでアセンブリを共有できます。グローバル アセンブリ キャッシュは, .NET ランタイムと共に自動的にインストールされます。コンポーネントは、通常、C:\WINNT\Assembly フォルダーに格納されます。
各展開場所には、次の表に示すように、利点と欠点があります。
展開の場所 |
利点 |
欠点 |
---|---|---|
ソリューション ギャラリー |
既定では、ソリューション ギャラリーに展開されるコードは、部分的な信頼で実行されます。ソリューション ギャラリー内のコードには、ファームの正常性を維持するためのリソース使用状況の監視機能もあります。ソリューション ギャラリーはサイト コレクションに固有です。 |
SharePoint Foundation の一部のオブジェクト モデルはソリューション ギャラリーで使用できません。 |
bin ディレクトリ |
既定では、アセンブリは部分的な信頼に基づいて実行されます。このディレクトリから実行されるコードのコード アクセス セキュリティ (CAS) 権限のレベルは低く設定されています。Web パーツを正しく機能させるには、Web パーツに付与されたアクセス許可を明示的に上げる必要があるため、既知の必須 CAS 権限を持つ bin ディレクトリでアセンブリを実行することを選択する管理者も多くいます。 bin ディレクトリは、Web アプリケーション固有です。そのため、コードを特定の Web アプリケーションに分離することができます。 |
Web パーツを複数の Web アプリケーションで実行するには、グローバル アセンブリ キャッシュに展開する必要があります。 |
グローバル アセンブリ キャッシュ |
既定では、アセンブリは、完全な信頼に基づいて実行されます。これらはグローバルにインストールされるので、どの Web アプリケーションでも動作します。グローバル アセンブリ キャッシュには、同じアセンブリの複数のバージョンを含めることができます。 |
一般に、グローバル アセンブリ キャッシュにインストールされたコードには CAS の制約がありません。 また、GAC に展開されたアセンブリはキャッシュに入れられます。そのため、アセンブリが再ビルドされた場合、SharePoint サイトでは自動的に更新されません。インターネット インフォメーション サービス (IIS) をリセットして、SharePoint Foundation で強制的にアセンブリを再読み込みする必要があります。 |
セキュリティ権限に関する考慮点
既定では、bin ディレクトリのコード アクセス セキュリティ権限は低く、単純な実行しか許可されません。Web パーツが Sharepoint オブジェクト モデルにアクセスする必要がある場合など、ほとんどの場合、アセンブリが正しく実行されるようにこれらの権限を昇格させる必要があります。
権限を昇格させる方法は 2 つあります。
推奨方法 : 新しい信頼ポリシー ファイルを作成し、web.config ファイルが新しいファイルをポイントするようにします。このオプションは複雑ですが、Web パーツの権限を正しく割り当てることができます。
信頼ポリシー ファイルの詳細については、「SharePoint Foundation の Web パーツをセキュリティ保護する」を参照してください。
オプションの方法 - bin ディレクトリの信頼レベルを上げます。Web アプリケーション ルートの web.config ファイルに、<trust> というタグがあります。この既定の属性は level="WSS_Minimal" です。このレベルを WSS_Medium に変更できます。このオプションは単純ですが、必要のない新しい権限が任意に付与されるため、新しい信頼ポリシー ファイルを作成するよりもセキュリティが低下します。
Web パーツ アセンブリに厳密な名前を付ける
厳密な名前を付ける場合、秘密キーを使用して、アセンブリにデジタル署名します。また、アセンブリには、署名を検証するための公開キーのスタンプが付きます。この方法により、Web パーツの不正バージョンを防ぐことができます。公開キーによるデジタル署名の検証に失敗した場合、SharePoint Foundation はモジュールの実行を拒否します。
Web パーツを bin に展開する場合、アセンブリに厳密な名前を付けることをお勧めします。Web パーツを GAC に展開する場合、アセンブリに厳密な名前を付ける必要があります。厳密な名前が付けられていないアセンブリは、SharePoint Foundation では推奨されません。
アセンブリに署名するには、Microsoft .NET Framework Software Development Kit (SDK) に含まれている sn.exe ツールを使用します。.NET Framework SDK の詳細については、「.NET Framework 2.0」を参照してください。sn.exe ツールは、コントロールを安全なコントロールとして SafeControls リストに登録するときに必要な公開キーの抽出にも使用されます。sn.exe ツールの使用方法については、「Sn.exe (厳密名ツール) (英語)」を参照してください。
SafeControl エントリの作成
SharePoint Foundation 技術では、基本的に、信頼されていないユーザーが SharePoint Foundation を実行しているシステム内に ASPX ページをアップロードし、作成できることを前提としています。信頼されていないユーザーが ASPX ページ内にサーバー側コードを勝手に追加するのを防ぐために、SharePoint Foundation には SafeControls リストがあります。
SafeControls リストは、サイト内の ASPX ページ上で起動しても安全であると指定された、SharePoint サイト固有の承認済みコントロールおよび Web パーツです。このリストは、Web アプリケーション ルートの web.config ファイルにあります。
SafeControl エントリは、Web パーツの XML ベースの宣言で、次の形式で表されます。
<SafeControl Assembly="AssemblyNameWithoutDLLExtension, Version=AssemblyVersionNumber, Culture=neutral, PublicKeyToken=PublicKeyToken" Namespace="NamespaceOfYourProject" TypeName="*" Safe="True" />
SafeControl エントリには、アセンブリ名、名前空間、バージョニング情報が使用され、署名がある場合は、コントロールが安全であることを証明するための公開キー トークンが必要です。Web パーツに署名がある場合は、厳密名ツールを使用して、SafeControl エントリで使用する公開キー トークンを取得できます。次のコマンドは、アセンブリの公開キー トークンを取得します。
sn -T AssemblyName.dll
.Webpart ファイルの作成
Web パーツ定義ファイルは、1 つの Web パーツのプロパティ設定を含む単純な XML ファイルです。Web パーツを Web パーツ ページにインポートするには、.webpart ファイルをアップロードするか、Web パーツを Web パーツ ギャラリーに追加するだけです。Web パーツのアップロード後、Web パーツをサイト ページに追加することで、その Web パーツを表示できます。インポート後に Web パーツの既定の名前と説明を表示するには、Title プロパティと Description プロパティを Web パーツ定義ファイルに含める必要があります。インポート中に他の Web パーツ プロパティを設定する場合は、それらも .webpart ファイルで定義することができます。.webpart ファイルの形式は次のとおりです。
<?xml version="1.0" encoding="utf-8" ?>
<webParts>
<webPart xmlns="https://schemas.microsoft.com/WebPart/v3">
<metaData>
<type name="TypeName, Version=VersionNumber, Culture=neutral,
PublicKeyToken=PublicKeyToken" />
<importErrorMessage>Cannot import this Web
Part.</importErrorMessage>
</metaData>
<data>
<properties>
<property name="Title" type="string">
WebPartTitle</property>
<property name="Description" type="string">
WebPartDescription
</property>
</properties>
</data>
</webPart>
</webParts>
SharePoint Foundation では、Web パーツ用の .dwp ファイルもサポートされます。Web パーツをエクスポートすると, .dwp または .webpart ファイルを確認できます。詳細については、「Web パーツをアップグレードする」を参照してください。