次の方法で共有


IIS 7 での .NET メンバーシップ認証を使用した FTP の構成

作成者: Robert McMurray

互換性

バージョン メモ
IIS 7.5 FTP 7.5 サービスは、Windows 7 および Windows Server 2008 R2 の IIS 7.5 の機能として付属しています。
IIS 7.0 FTP 7.0 および FTP 7.5 サービスは、IIS 7.0 とは別にリリースされ、https://www.iis.net/downloads/microsoft/ftp という URL からサービスをダウンロードしてインストールする必要がありました。

はじめに

Microsoft は、Windows Server® 2008 用に完全に書き換えられた新しい FTP サービスを作成しました。 この新しい FTP サービスには、Web 作成者が以前よりも適切にコンテンツを公開できるようにする多くの新機能が組み込まれており、Web 管理者にはより多くのセキュリティと展開のオプションが提供されています。

このドキュメントでは、FTP メンバーシップベースの認証用に既定の Web サイトを構成する方法について、順を追って説明します。

Note

このドキュメントは、ローカル Web サーバーにインストールされた SQL Server のインスタンスを使用して作成されました。

前提条件

この記事の手順を完了するには、次の項目が必要です。

  1. IIS 7.0 を Windows Server 2008 にインストールし、次のように構成する必要があります。

    • IIS 7.0 のインストールによって作成される既定の Web サイトが、引き続き存在する必要があります。
    • インターネット インフォメーション サービス マネージャーをインストールする必要があります。
  2. 新しい FTP サービスをインストールする必要があります。 次のいずれかのリンクを使用して、Web サイト (https://www.iis.net/) から FTP サービスをダウンロードしてインストールできます。

    • FTP 7.5 for IIS 7.0 (x64)
    • FTP 7.5 for IIS 7.0 (x86)
  3. コンテンツのアクセス許可を設定して、認証を処理する機能拡張 COM プロセスへのアクセスを許可します。

    • コマンド プロンプトを開きます。

    • 次のコマンドを入力します。

      ICACLS "%SystemDrive%\inetpub\ftproot" /Grant "Network Service":M /T
      
    • コマンド プロンプトを閉じます。

既定の Web サイトへの FTP 公開の追加

この最初のセクションでは、既定の Web サイトに FTP 公開を追加し、ローカル Administrator アカウントがコンテンツを編集できるように必要な設定を追加します。

  1. IIS 7.0 マネージャーの [接続] ウィンドウで、ツリーの [サイト] ノードを展開し、[既定の Web サイト] をクリックします。

  2. [操作] ウィンドウで [FTP 公開の追加] をクリックします。
    [既定の Web サイト] ページが表示されている [I I S マネージャー] ウィンドウのスクリーンショット。[アクション] メニューの [Add F T P Publishing]\(F T P 発行の追加\) が丸で囲まれています。

  3. [FTP サイト公開の追加] ウィザードが表示されたら、次の操作を実行します。

    • [IP アドレス] ドロップダウンから FTP サイトの IP アドレスを選択するか、または既定値である [すべて未割り当て] を選択します。このチュートリアルでは、[IP アドレス] ボックスに「127.0.0.1」と入力して、コンピューターのローカル ループバック IP アドレスを入力します。

      Note

      IPv6 を使用している場合は、"::1" の IPv6 localhost バインディングも追加する必要があります。

    • 通常は、[ポート] ボックスに FTP サイトの TCP/IP ポートを入力します。 このチュートリアルでは、既定のポートである 21 を選択します。

    • このチュートリアルではホスト名を使用しないため、[仮想ホスト] ボックスは必ず空欄にしてください。

    • [SSL 証明書] ドロップダウンが [選択されていません] に設定され、[SSL を許可する] オプションが選択されていることを確認します。

    • これらの項目が完了したら、[次へ] をクリックします。

      [ADD F T P Site]\(F T P サイトの追加\) ダイアログ ボックスのスクリーンショット。

  4. 認証または認可の設定は後で行うため、ウィザードの次のページでは行いません。 [完了] をクリックして、ウィザードを完了します。
    [ADD F T P Publishing]\(F T P 発行の追加\) ダイアログ ボックスのスクリーンショット。

まとめ

このセクションで完了した項目をまとめます。FTP の公開を次の方法で [既定の Web サイト] に追加しました。

  • ポート 21 のローカル ループバック IP アドレス用に Web サイトの FTP バインドを追加する
  • FTP サイトには、Secure Sockets Layer (SSL) を使用しないことを選択する

Note

認証または認可の設定はまだ有効になっていません。

メンバーシップ認証に対する ASP.NET の構成

ASP.NET メンバーシップ用にローカル SQL Server を構成する

このセクションでは、メンバーシップ認証の ASP.NET を構成するための基本的なプロセスについて説明します。 詳細については、MSDN Web サイトの「ASP.NET 2.0 で SQL Server でフォーム認証を使用する方法」トピックにある「メンバーシップの ASP.NET を構成する」セクションを参照してください。

既存の SQL Server にアクセスできない場合は、SQL Server をインストールする必要があります。

ASP.NET データベースをまだ作成していない場合は、使用しているフレームワークのバージョンに対応するコマンドを次の一覧から使用して、SQL サーバー上に ASP.NET データベースをビルドする必要があります。

  • 32 ビット フレームワーク:

    "%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql.exe" -S localhost -A all -E
    
  • 64 ビット フレームワーク:

    "%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_regsql.exe" -S localhost -A all -E
    

Note

上記の例に示すように "localhost" を使用するのではなくリモート SQL サーバーを使用するには、「ASP.NET 2.0 で SQL Server でフォーム認証を使用する方法」記事の「展開に関する考慮事項」セクションを参照してください。

FTP 拡張機能の COM プロセスは "NT AUTHORITY\Network Service" として実行されるため、SQL Server 上の ASP.NET データベースに "NT AUTHORITY\Network Service" アカウントを追加する必要があります。 そのためには、次の手順を行ってください。

  1. SQL Server Enterprise Manager を開きます。
  2. NT AUTHORITY\Network Service の SQL Server ログインを作成します。
  3. データベース ユーザーを作成して、Aspnetdb データベースへのログイン アクセス権を付与します。
  4. データベース ユーザーを aspnet_Membership_FullAccess データベース ロールに追加します。

FTP メンバーシップの ASP.NET を構成する

次の手順では、FTP アクセスのメンバーシップ認証を許可するように ASP.NET を構成するプロセスについて説明します。

  1. Windows メモ帳 などのテキスト エディターを使用して、ルートの web.config ファイルを開きます。このファイルは、使用しているフレームワークのバージョンに適したパスに配置する必要があります。

    • 32 ビット フレームワーク:

      "%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\CONFIG\web.config"
      
    • 64 ビット フレームワーク:

      "%SystemRoot%\Microsoft.NET\Framework64\v2.0.50727\CONFIG\web.config"
      
  2. 一番下までスクロールし、</configuration> タグを閉じる前に次のコードを貼り付けます。

    <___location path="GlobalFtpSite/ftpsvc">
       <connectionStrings>
          <add connectionString="Server=localhost;Database=aspnetdb;Integrated Security=true" name="FtpLocalSQLServer" />
       </connectionStrings>
       <system.web>
          <membership defaultProvider="FtpSqlMembershipProvider">
             <providers>
                <add name="FtpSqlMembershipProvider"
                   type="System.Web.Security.SqlMembershipProvider,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"
                   connectionStringName="FtpLocalSQLServer"
                   enablePasswordRetrieval="false"
                   enablePasswordReset="false"
                   requiresQuestionAndAnswer="false"
                   applicationName="/"
                   requiresUniqueEmail="false"
                   passwordFormat="Clear" />
             </providers>
          </membership>
          <roleManager defaultProvider="FtpSqlRoleProvider" enabled="true">
             <providers>
                <add name="FtpSqlRoleProvider"
                   type="System.Web.Security.SqlRoleProvider,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"
                   connectionStringName="FtpLocalSQLServer"
                   applicationName="/" />
             </providers>
          </roleManager>
       </system.web>
    </___location>
    
  3. ルートの web.config ファイルを保存して閉じます。

まとめ

ここでは、メンバーシップ認証用に ASP.NET を構成しました。 このセクションで完了した項目をまとめます。次の方法でサーバーを構成しました。

  • ASP.NET メンバーシップ用にローカル SQL Server を構成する
  • FTP メンバーシップ用に ASP.NET を構成する

FTP メンバーシップ認証の構成

このセクションでは、[既定の Web サイト] を使用してメンバーシップ データベースを構成する方法について説明します。これは、後ほど FTP ベースのメンバーシップ認証で行うユーザーの作成時に使用されます。 そのためには、次の手順を行ってください。

前提条件となる手順

  1. インターネット インフォメーション サービス (IIS) マネージャーを開きます。
  2. [接続] ツリーの一番上のノードでコンピューターを展開します。
  3. ツリーの [サイト] ノードを展開します。

.NET メンバーシップ設定の構成

手順 1: 接続文字列を追加する

ツリーで [既定の Web サイト] を強調表示し、[接続文字列] をダブルクリックして、次の手順に従います。

  1. [操作] ウィンドウで [追加...] をクリックします。

  2. 次のオプションを構成します:

    • 名前: "FtpLocalSQLServer"
    • サーバー: "localhost"
    • データベース: "aspnetdb"
  3. OK をクリックします。

手順 2: ロール プロバイダーを追加する

ツリーで [既定の Web サイト] を強調表示し、[プロバイダー] をダブルクリックして、次の手順に従います。

  1. ドロップダウンから [.NET ロール] を選択します。

  2. [操作] ウィンドウで [追加...] をクリックします。

  3. ドロップダウンから [SqlRoleProvider] を選択します。

  4. 次のオプションを構成します:

    • 名前: "FtpSqlRoleProvider"
    • 接続文字列名: "FtpLocalSQLServer"
    • アプリケーション名: "/"
  5. OK をクリックします。

手順 3: メンバーシップ プロバイダーを追加する

ツリーで [既定の Web サイト] を強調表示し、[プロバイダー] をダブルクリックして、次の手順に従います。

  1. ドロップダウンから [.NETユーザー] を選択します。

  2. [操作] ウィンドウで [追加...] をクリックします。

  3. ドロップダウンから [SqlMembershipProvider] を選択します。

  4. 次のオプションを構成します:

    • 名前: "FtpSqlMembershipProvider"
    • 接続文字列名: "FtpLocalSQLServer"
    • アプリケーション名: "/"
  5. OK をクリックします。

手順 4: FTP メンバーシップのロールを追加する

ツリーで [既定の Web サイト] を強調表示し、[.NET ロール] をダブルクリックして、次の手順に従います。

  1. 接続に関するエラー ダイアログが表示される場合があります。 その場合は、[OK] をクリックしてエラー ダイアログを閉じてから、次の手順を使用して既定のプロバイダーを構成します。

    • [操作] ウィンドウで [既定のプロバイダーの設定...] をクリックします。
    • ドロップダウンから [FtpSqlRoleProvider] を選択します。
    • OK をクリックします。
  2. [操作] ウィンドウで [追加...] をクリックします。

  3. 次のオプションを構成します:

    • 名前: "ftprole"
  4. OK をクリックします。

手順 5: FTP メンバーシップのユーザー アカウントを追加する

ツリーで [既定の Web サイト] を強調表示し、[.NET ユーザー] をダブルクリックして、次の手順に従います。

  1. 接続に関するエラー ダイアログが表示される場合があります。 その場合は、[OK] をクリックしてエラー ダイアログを閉じてから、次の手順を使用して既定のプロバイダーを構成します。

    • [操作] ウィンドウで [既定のプロバイダーの設定...] をクリックします。
    • ドロップダウンから [FtpSqlMembershipProvider] を選択します。
    • OK をクリックします。
  2. [操作] ウィンドウで [追加] をクリックします。

  3. 次のオプションを構成します:

    • ユーザー名: "ftpuser"
    • 電子メール: "ftpuser@localhost.local"
    • パスワード: "P@ssw0rd"
  4. 次へ をクリックします。

  5. ユーザーを "ftprole" に追加し、[完了] をクリックします。

FTP のメンバーシップ認証の有効化

メンバーシップ認証用に FTP を構成する

ツリーで [既定の Web サイト] を強調表示し、[FTP 認証] をダブルクリックして、次の手順に従います。

  1. [操作] ウィンドウで [カスタム プロバイダー...] をクリックします。
  2. [AspNetAuth] のボックスをオンにします。
  3. OK をクリックします。

次の 2 つの方法のいずれかを使用して、FTP ユーザーを承認できるようになりました。

方法 1: メンバーシップ ロールの FTP 認可規則を構成する

ツリーで [既定の Web サイト] を強調表示し、[FTP 認可規則] をダブルクリックして、次の手順に従います。

  1. [操作] ウィンドウで [許可規則の追加] をクリックします。
  2. アクセス オプションに [指定された役割またはユーザー グループ] を選択します。
  3. ロール名として「ftprole」と入力します。
  4. [アクセス許可] オプションの [読み取り][書き込み] を選択します。
  5. OK をクリックします。

方法 2: メンバーシップ ユーザーの FTP 認可規則を構成する

ツリーで [既定の Web サイト] を強調表示し、[FTP 認可規則] をダブルクリックして、次の手順に従います。

  1. [操作] ウィンドウで [許可規則の追加] をクリックします。
  2. アクセス オプションに [指定されたユーザー] を選択します。
  3. ユーザー名として「ftpuser」と入力します。
  4. [アクセス許可] オプションの [読み取り][書き込み] を選択します。
  5. OK をクリックします。

まとめ

このセクションで完了した項目をまとめます。次の方法でサーバーを構成しました。

  • .NET メンバーシップ設定の構成:

    • 接続文字列の追加
    • ロール プロバイダーの追加
    • メンバーシップ プロバイダーの追加
    • FTP メンバーシップのロールの追加
    • FTP メンバーシップのユーザー アカウントの追加
  • FTP のメンバーシップ認証の有効化:

    • メンバーシップの FTP 認証の構成
    • メンバーシップ ユーザーの FTP 認可規則の構成
    • メンバーシップ ロールの FTP 認可規則の構成

トラブルシューティング

メンバーシップ ロールを使用している場合は、次の Microsoft サポート技術情報の記事に記載されている修正プログラムをインストールする必要が生じる場合があります。

https://support.microsoft.com/kb/955136/

ログインしようとすると、次の応答が表示されます。

530-User cannot log in.

Win32 error:
Error details: .Net SqlClient Data Provider: An error has occurred while establishing a connection to the server. 
When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server
does not allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)

530 End
Login failed.

このエラーは、リモート接続を受け入れるように SQL サーバーを構成していない場合に発生します。