マネージ コード (Visual Basic) を使用して単純な FTP ホーム ディレクトリ プロバイダーを作成する方法
公開日: 2009 年 9 月 11 日 (作業者: robmcm (英語))
更新日: 2009 年 9 月 11 日 (作業者: robmcm (英語))
マイクロソフトでは、Windows Server® 2008 用に完全に書き換えた新しい FTP サービスを作成しました。この新しい FTP サービスでは多くの新機能が追加され、Web サイト作成者は簡単にコンテンツを発行でき、Web 管理者は多くのセキュリティ オプションと展開オプションを使用できます。
この新しい FTP 7.5 サービスでは、FTP サービスに付属の組み込み機能の拡張を可能にする拡張機能がサポートされます。具体的には、FTP 7.5 で、独自の認証プロバイダーおよび承認プロバイダーの作成がサポートされます。さらに、カスタム FTP ログ作成および FTP ユーザーのホーム ディレクトリ情報の判定を行うためのプロバイダーを作成することもできます。
このチュートリアルでは、マネージ コードを使用して単純な FTP ホーム ディレクトリ プロバイダーを作成するステップを説明します。
必要条件
この記事の手順を完了するには、以下の項目が必須です。
- 1. サーバーに IIS 7 がインストールされている必要があります。また、インターネット インフォメーション サービス (IIS) マネージャーもインストールされている必要があります。
- 新しい FTP 7.5 サービスがインストールされている必要があります。Windows Server 2008 を使用している場合は、FTP 7.5 サービスを、Web サイト (https://www.iis.net/(英語)) からダウンロードしてインストールできます。次のいずれかのリンクを使用してください。
- FTP 発行用のルート フォルダーを作成する必要があります。
- Visual Studio 2008 を使用する必要があります。(メモ: Visual Studio の旧バージョンを使用すると、このチュートリアルのステップの一部が不正確になる可能性があります)。
- 各ユーザーのホーム ディレクトリを作成する必要があります。このコード サンプルでは C:\Ftpusers\%**UserName% を使用していますが、必要に応じて変更できます。
ステップ 1: プロジェクト環境のセットアップ
このステップでは、デモ プロバイダー用のプロジェクトを Visual Studio 2008 で作成します。
Microsoft Visual Studio 2008 を開きます。
[ファイル] メニューの [新規作成] をクリックし、[プロジェクト] をクリックします。
[新しいプロジェクト] ダイアログ ボックスで以下の操作を行います。
- プロジェクトの種類として [Visual Basic] を選択します。
- テンプレートとして [クラス ライブラリ] を選択します。
- プロジェクト名として「FtpHomeDirectoryDemo」と入力します。
- [OK] をクリックします。
プロジェクトが開いたら、プロジェクトに必要な参照を追加します。
[プロジェクト] メニューの [FtpHomeDirectoryDemo のプロパティ] をクリックします。
[参照] タブをクリックします。
FTP 拡張機能ライブラリへの参照パスを追加します。
[参照] タブで [参照パス] ボタンをクリックします。
お使いの Windows バージョン用の FTP 拡張機能アセンブリへのパスを入力します。次は、オペレーティング システム ドライブが C: の場合です。
Windows Server 2008 および Windows Vista:
- C:\Windows\assembly\GAC_MSIL\Microsoft.Web.FtpServer\7.5.0.0__31bf3856ad364e35
Windows 7:
- C:\Program Files\Reference Assemblies\Microsoft\IIS
[フォルダの追加] をクリックします。
[OK] をクリックします。
プロジェクトに FTP 拡張機能ライブラリへの参照を追加します。
- [参照] タブで [追加] ボタンをクリックします。
- コンポーネントの一覧の [Microsoft.Web.FtpServer] をクリックします。
- [OK] をクリックします。
プロジェクトに System.Web への参照を追加します。
- [参照] タブで [追加] ボタンをクリックします。
- コンポーネントの一覧の [System.Web] をクリックします。
- [OK] をクリックします。
厳密な名前のキーをプロジェクトに追加します。
- [プロジェクト] メニューの [FtpHomeDirectoryDemo のプロパティ] をクリックします。
- [署名] タブをクリックします。
- [アセンブリの署名] チェック ボックスをオンにします。
- 厳密なキー名を選択するドロップダウン ボックスから [<新規作成>] を選択します。
- キー ファイルの名前として「FtpHomeDirectoryDemoKey」と入力します。
- 必要な場合、キー ファイル用のパスワードを入力します。不要な場合は、[キー ファイルをパスワードで保護する] チェック ボックスをオフにします。
- [OK] をクリックします。
オプション: カスタム ビルド イベントを追加して、開発用コンピューター上のグローバル アセンブリ キャッシュ (GAC) に DLL を自動的に追加できます。
[プロジェクト] メニューの [FtpHomeDirectoryDemo のプロパティ] をクリックします。
[コンパイル] タブをクリックします。
[ビルド イベント] ボタンをクリックします。
[ビルド後に実行するコマンド ライン] ダイアログ ボックスに、次を入力します。
net stop ftpsvc
call "%VS90COMNTOOLS%\vsvars32.bat">null
gacutil.exe /if "$(TargetPath)"
net start ftpsvc[OK] をクリックします。
プロジェクトを保存します。
ステップ 2: 拡張機能クラスの作成
このステップでは、デモ プロバイダー用の拡張機能インターフェイスを実装します。
- 認証クラスのコードを追加します。
[ソリューション エクスプローラー] で [Class1.vb] ファイルをダブルクリックします。
既存のコードを削除します。
エディターに次のコードを貼り付けます。
Imports System Imports Microsoft.Web.FtpServer Namespace FtpHomeDirectory Public Class FtpHomeDirDemo Inherits BaseProvider Implements IFtpHomeDirectoryProvider Function IFtpHomeDirectoryProvider_GetUserHomeDirectoryData( _ ByVal sessionId As String, _ ByVal siteName As String, _ ByVal userName As String) _ As String _ Implements IFtpHomeDirectoryProvider.GetUserHomeDirectoryData ' メモ: 独自のカスタム ロジックをここに追加できます。 ' ユーザー名に基づいてユーザーのホーム ディレクトリを返します。 Return ("C:\Ftpusers\" + userName) End Function End Class End Namespace
- プロジェクトを保存してビルドします。
メモ: GAC にアセンブリを登録するオプションのステップを使用しなかった場合は、アセンブリを IIS 7 コンピューターに手動でコピーし、Gacutil.exe ツールを使用して GAC にアセンブリを追加する必要があります。詳細については、マイクロソフトの MSDN Web サイトの次のトピックを参照してください。
ステップ 3: FTP へのホーム ディレクトリ プロバイダーの追加
このステップでは、デモ プロバイダーを FTP サービスおよび既定の Web サイトに追加します。
- 拡張機能プロバイダー用のアセンブリ情報を判断します。
- Windows Explorer で、パス C:\Windows\assembly を開きます。ここで、C: はオペレーティング システム ドライブです。
- FtpHomeDirectoryDemo アセンブリを探します。
- アセンブリを右クリックし、[プロパティ] をクリックします。
- [カルチャ] の値 ([Neutral] など) をコピーします。
- [バージョン] 番号 ([1.0.0.0] など) をコピーします。
- [公開キー トークン] の値 ([426f62526f636b73] など) をコピーします。
- [キャンセル] をクリックします。
- FTP プロバイダーのグローバル リストに拡張機能プロバイダーを追加します。
- インターネット インフォメーション サービス (IIS) マネージャーを開きます。
- [接続] ウィンドウで、コンピューターの名前をクリックします。
- メイン ウィンドウで [FTP 認証] をダブルクリックします。
- [操作] ウィンドウで、[カスタム プロバイダー] をクリックします。
- [登録] をクリックします。
- プロバイダーの [名前] に「FtpHomeDirectoryDemo」と入力します。
- [マネージ プロバイダー (.NET)] をクリックします。
- 前にコピーした情報を使用して、拡張機能プロバイダーのアセンブリ情報を入力します。たとえば、次のようになります。
FtpHomeDirectoryDemo.FtpHomeDirectory.FtpHomeDirDemo,FtpHomeDirectoryDemo,version=1.0.0.0,Culture=neutral,PublicKeyToken=426f62526f636b73 - [OK] をクリックします。
- プロバイダーの一覧の [FtpHomeDirectoryDemo] チェック ボックスをオフにします。
- [OK] をクリックします。
- サイトにカスタム プロバイダーを追加します。
この時点では、サイトにカスタム機能を追加するための UI がないので、次のコマンド ラインを使用する必要があります。
AppCmd set site "Default Web Site" /+ftpServer.customFeatures.providers.[name='FtpHomeDirectoryDemo',enabled='true']
- カスタム プロバイダーを使用するために、ユーザーの分離を構成します。
この時点では、ユーザーの分離用にカスタム機能を指定するための UI がないので、次のコマンド ラインを使用する必要があります。
AppCmd set site "Default Web Site" /ftpServer.userIsolation.mode:Custom
まとめ
このチュートリアルでは、次について学びました。
- カスタム FTP ホーム ディレクトリ プロバイダー用に Visual Studio 2008 でプロジェクトを作成する方法
- カスタム FTP ホーム ディレクトリ参照用の拡張機能インターフェイスの実装方法
- FTP サービスへのカスタム ホーム ディレクトリ プロバイダーの追加方法
ユーザーが FTP サイトに接続したときに、FTP サービスはデモ プロバイダーに指定したパスに基づいて、各ユーザーのホーム ディレクトリを設定します。