次の方法で共有


FTP プロバイダー定義の追加 <add>

概要

<providerDefinitions> 要素の <add> 要素は、マネージド コードまたはネイティブ コード (COM) プロバイダーの登録情報を指定します。

FTP 7.5 以降、FTP サービスではカスタム認証とロール、ログ、ホーム ディレクトリ参照の拡張性がサポートされています。 拡張プロバイダーを作成するときは、まず、マネージド コード プロバイダーの場合は .NET グローバル アセンブリ キャッシュ (GAC) に、ネイティブ コード (COM) プロバイダーの場合はシステムのレジストリに、登録する必要があります。 FTP カスタム プロバイダーの作成方法の詳細については、Microsoft の IIS.net Web サイトの次のセクションを参照してください。

FTP 7.5 向けの開発

互換性

バージョン メモ
IIS 10.0 <add> 要素は IIS 10.0 では変更されませんでした。
IIS 8.5 <add> 要素は IIS 8.5 では変更されませんでした。
IIS 8.0 <add> 要素は IIS 8.0 では変更されませんでした。
IIS 7.5 <providerDefinitions> 要素の <add> 要素は、IIS 7.5 の機能として付属しています。
IIS 7.0 <providerDefinitions> 要素の <add> 要素が、IIS 7.0 用の別個のダウンロードとして FTP 7.0 で導入されました。
IIS 6.0 IIS 6.0 の FTP サービスは、拡張性をサポートしていませんでした。

Note

FTP 7.0 サービスと FTP 7.5 サービスは IIS 7.0 とは別に出荷され、次の URL からモジュールをダウンロードしてインストールする必要がありました。

https://www.iis.net/expand/FTP

Windows 7 と Windows Server 2008 R2 では、FTP 7.5 サービスは IIS 7.5 の機能として付属しているため、FTP サービスのダウンロードは必要なくなりました。

段取り

Web サーバーの FTP 公開をサポートするには、FTP サービスをインストールする必要があります。 そのためには、次のステップに従います。

Windows Server 2012 または Windows Server 2012 R2

  1. タスク バーで [サーバー マネージャー]をクリックします。

  2. [サーバー マネージャー] で、[管理] メニューを選択し、[役割と機能の追加] を選択します。

  3. [役割と機能の追加] ウィザードで、[次へ] をクリックします。 インストールの種類を選択し、[次へ] をクリックします。 対象サーバーを選択し、[次へ] をクリックします。

  4. [サーバーの役割] ページで、[Web サーバー (IIS)] を展開して、[FTP サーバー] を選びます。

    Note

    FTP サービスに対して ASP.NET メンバーシップ認証または IIS マネージャー認証をサポートするには、[FTP Service] に加えて[FTP 拡張] も選択する必要があります。
    Windows Server 2012 インターフェイスで選択された F T P サービスと F T P 拡張機能のスクリーンショット。 .

  5. [次へ] をクリックし、[機能の選択] ページで再度 [次へ] をクリックします。

  6. [インストール オプションの確認] ページで、[インストール] をクリックします。

  7. [結果] ページで、 [閉じる]をクリックします。

Windows 8 または Windows 8.1

  1. [スタート] 画面で、ポインターを左下隅まで移動し、[スタート] ボタンを右クリックし、[コントロール パネル] をクリックします。

  2. [コントロール パネル][プログラムと機能] をクリックし、[Windows の機能の有効化または無効化] をクリックします。

  3. [インターネット インフォメーション サービス] を展開し、[FTP サーバー] を展開します。

    Note

    FTP サービスに対して ASP.NET メンバーシップ認証または IIS マネージャー認証をサポートするには、[FTP 拡張] も選択する必要があります。
    Windows 8 インターフェイスで選択された F T P サービスと F T P 拡張機能のスクリーンショット。

  4. OK をクリックします。

  5. 閉じるをクリックします。

Windows Server 2008 R2

  1. タスク バーで [スタート] をクリックし、[管理ツール] をポイントして、[サーバー マネージャ] をクリックします。

  2. [サーバー マネージャ] 階層ウィンドウで [役割] を展開し、[Web サーバー (IIS)] をクリックします。

  3. [Web サーバー (IIS)] ウィンドウで、[役割サービス] セクションまでスクロールし、[役割サービスの追加] をクリックします。

  4. [役割サービスの追加] ウィザード[役割サービスの選択] ページで [FTP サーバー] を展開します。

  5. [FTP Service] を選択します。

    Note

    FTP サービスに対して ASP.NET メンバーシップ認証または IIS マネージャー認証をサポートするには、[FTP 拡張] も選択する必要があります。
    Windows Server 2008 インターフェイスで選択された F T P サービスと F T P 拡張機能のスクリーンショット。

  6. 次へ をクリックします。

  7. [インストール オプションの確認] ページで、[インストール] をクリックします。

  8. [結果] ページで、 [閉じる]をクリックします。

Windows 7

  1. タスク バーで、[スタート][コントロール パネル] の順にクリックします。

  2. [コントロール パネル][プログラムと機能] をクリックし、[Windows の機能の有効化または無効化] をクリックします。

  3. [インターネット インフォメーション サービス][FTP サーバー] の順に展開します。

  4. [FTP Service] を選択します。

    Note

    FTP サービスに対して ASP.NET メンバーシップ認証または IIS マネージャー認証をサポートするには、[FTP 拡張] も選択する必要があります。
    Windows 7 インターフェイスで選択された F T P サービスと F T P 拡張機能のスクリーンショット。

  5. OK をクリックします。

Windows Server 2008 または Windows Vista

  1. 次の URL からインストール パッケージをダウンロードします。

  2. 次のチュートリアルの手順に従って、FTP サービスをインストールします。

操作方法

FTP サイトに対してマネージド コード カスタム認証プロバイダーを追加する方法

Note

これらの手順は、カスタム FTP 認証プロバイダーが既にインストールされ、サーバーのグローバル アセンブリ キャッシュ (GAC) に登録されていることを前提としています。マネージド アセンブリを登録する方法の詳細については、Microsoft MSDN Web サイトの「グローバル アセンブリ キャッシュ ツール (Gacutil.exe)」トピックを参照してください。

  1. 次のように、拡張プロバイダーのアセンブリ情報を確認します。

    • Windows エクスプローラーで、"C:\Windows\assembly" パスを開きます。ここで、C: はオペレーティング システム ドライブです。
    • アセンブリを見つけます。 たとえば、FtpAuthenticationDemo です。
    • アセンブリを右クリックし、[プロパティ] をクリックします。
    • カルチャ値をコピーします。 たとえば、Neutral です。
    • バージョン番号をコピーします。 たとえば、1.0.0.0 です。
    • 公開キー トークン値をコピーします。 たとえば、426f62526f636b73 です。
    • [キャンセル] をクリックします。
  2. 次のように、拡張プロバイダーを FTP 認証プロバイダーのグローバル リストに追加します。

    • [インターネット インフォメーション サービス (IIS) マネージャー] を開きます。
    • [接続] ウィンドウのコンピューター名をクリックします。
    • メイン ウィンドウで [FTP Authentication] をダブルクリックします。
      [F T P 認証] ウィンドウで [匿名認証] が選択されているスクリーンショット。
    • [操作] ウィンドウで [Custom Providers...] (カスタム プロバイダー...) を選択します。
    • [登録] をクリックします。
      空の [カスタム プロバイダー] ダイアログのスクリーンショット。
    • [名前] ボックスに、カスタム認証プロバイダーのフレンドリ名を入力します。 たとえば、FtpAuthenticationDemo です。
    • [マネージド プロバイダー (.NET)] を選択します。
      空の [カスタム認証プロバイダーの追加] ダイアログのスクリーンショット。
    • 前にコピーした情報を使用して、拡張プロバイダーのアセンブリ情報を入力します。 次に例を示します。
      FtpAuthentication.FtpAuthDemo, FtpAuthenticationDemo, version=1.0.0.0, Culture=neutral, PublicKeyToken=426f62526f636b73
    • OK をクリックします。
    • プロバイダーの一覧でカスタム認証プロバイダーのチェック ボックスをオフにします。
    • OK をクリックします。
  3. 次のように、FTP サイトに対してカスタム認証プロバイダーを追加します。

    • インターネット インフォメーション サービス (IIS) マネージャーで FTP サイトを開きます。
    • メイン ウィンドウで [FTP 認証] をダブルクリックします。
    • [操作] ウィンドウで [カスタム プロバイダー] をクリックします。
    • プロバイダーの一覧でカスタム認証プロバイダーをオンにして選択し、有効にします。
    • OK をクリックします。

構成

<providerDefinitions> 要素の <add> 要素は、ApplicationHost.config のグローバル レベルで構成されます。

属性

属性 説明
name 必須の文字列属性です。

カスタム プロバイダーのフレンドリ名を指定します。

既定値はありません。
type 省略可能な文字列属性。

マネージド コード プロバイダーの種類を指定します。

既定値はありません。
clsid 省略可能な文字列属性。

ネイティブ コード プロバイダーの COM クラス ID を指定します。

既定値はありません。

子要素

なし。

構成サンプル

次のサンプルは、サーバーのグローバル <system.ftpServer> 要素のいくつかの構成設定を示しています。 具体的には、この例の設定では、次の方法を示します。

  • FTP 資格情報のキャッシュを有効にし、タイムアウトを 10 分 (600 秒) に指定します。

  • データ チャネル通信用に、下限ポートを 5000 に、上限ポートを 6000 に構成します。

  • ログを有効にし、ログ ファイルがサイトごとに保存され、ログ ファイルが UTC 時間で毎日ローテーションされるように指定します。

  • カスタム FTP プロバイダーを指定し、そのプロバイダーのカスタム パラメーターを指定します。

  • ローカル ホストからの FTP アクセスを許可し、IP アドレス 169.254.0.0 から 169.254.255.255 のブロックへのアクセスを拒否するグローバル IP 制限を指定します。

  • 次のオプションを使って要求のフィルタリングを構成します。

    • FrontPage Server Extensions で使われる _vti_bin 仮想ディレクトリへの FTP アクセスをブロックします。
    • 実行可能ファイルに関連付けられているいくつかのファイルの種類をブロックします。
    • 最大ファイル サイズとして 100 MB を指定します。
  • 管理者グループのアクセスを許可するグローバル認可規則を追加します。

  • FTP 仮想ホスト名にドメイン名構文を使用できるように指定します。

<system.ftpServer>
   <caching>
      <credentialsCache enabled="true" flushInterval="600" />
   </caching>
   <firewallSupport lowDataChannelPort="5000" highDataChannelPort="6000" />
   <log centralLogFileMode="Site">
      <centralLogFile period="Daily" localTimeRollover="false" enabled="true" />
   </log>
   <providerDefinitions>
      <add name="FtpXmlAuthentication"
         type="FtpXmlAuthentication, FtpXmlAuthentication, version=1.0.0.0, Culture=neutral, PublicKeyToken=426f62526f636b73" />
      <activation>
         <providerData name="FtpXmlAuthentication">
            <add key="xmlFileName" value="C:\Inetpub\XmlSample\Users.xml" />
         </providerData>
      </activation>
   </providerDefinitions>
   <security>
      <ipSecurity enableReverseDns="false" allowUnlisted="true">
         <add ipAddress="169.254.0.0" subnetMask="255.255.0.0" allowed="false" />
         <add ipAddress="127.0.0.1" allowed="true" />
      </ipSecurity>
      <requestFiltering>
         <hiddenSegments>
            <add segment="_vti_bin" />
         </hiddenSegments>
         <fileExtensions allowUnlisted="true">
            <add fileExtension="exe" allowed="false" />
            <add fileExtension="cmd" allowed="false" />
            <add fileExtension="com" allowed="false" />
            <add fileExtension="bat" allowed="false" />
         </fileExtensions>
         <requestLimits maxAllowedContentLength="104857600" />
      </requestFiltering>
      <authorization>
         <add accessType="Allow" roles="administrators" permissions="Read, Write" />
      </authorization>
   </security>
   <serverRuntime>
      <hostNameSupport useDomainNameAsHostName="true" />
   </serverRuntime>
</system.ftpServer>

サンプル コード

次の例では、カスタム FTP プロバイダー定義をサーバーに追加します。

AppCmd.exe

appcmd.exe set config -section:system.ftpServer/providerDefinitions /+"[name='FtpXmlAuthentication',type='FtpXmlAuthentication, FtpXmlAuthentication, version=1.0.0.0, Culture=neutral, PublicKeyToken=426f62526f636b73']" /commit:apphost

Note

AppCmd.exe を使用してこれらの設定を構成するときは、commit パラメーターを必ず apphost に設定する必要があります。 これで、ApplicationHost.config ファイルの適切な場所セクションに構成設定がコミットされます。

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetApplicationHostConfiguration();
         ConfigurationSection providerDefinitionsSection = config.GetSection("system.ftpServer/providerDefinitions");
         ConfigurationElementCollection providerDefinitionsCollection = providerDefinitionsSection.GetCollection();

         ConfigurationElement addElement = providerDefinitionsCollection.CreateElement("add");
         addElement["name"] = @"FtpXmlAuthentication";
         addElement["type"] = @"FtpXmlAuthentication, FtpXmlAuthentication, version=1.0.0.0, Culture=neutral, PublicKeyToken=426f62526f636b73";
         providerDefinitionsCollection.Add(addElement);

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample
   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration
      Dim providerDefinitionsSection As ConfigurationSection = config.GetSection("system.ftpServer/providerDefinitions")
      Dim providerDefinitionsCollection As ConfigurationElementCollection = providerDefinitionsSection.GetCollection

      Dim addElement As ConfigurationElement = providerDefinitionsCollection.CreateElement("add")
      addElement("name") = "FtpXmlAuthentication"
      addElement("type") = "FtpXmlAuthentication, FtpXmlAuthentication, version=1.0.0.0, Culture=neutral, PublicKeyToken=426f62526f636b73"
      providerDefinitionsCollection.Add(addElement)

      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";

var providerDefinitionsSection = adminManager.GetAdminSection("system.ftpServer/providerDefinitions", "MACHINE/WEBROOT/APPHOST");
var providerDefinitionsCollection = providerDefinitionsSection.Collection;

var addElement = providerDefinitionsCollection.CreateNewElement("add");
addElement.Properties.Item("name").Value = "FtpXmlAuthentication";
addElement.Properties.Item("type").Value = "FtpXmlAuthentication, FtpXmlAuthentication, version=1.0.0.0, Culture=neutral, PublicKeyToken=426f62526f636b73";
providerDefinitionsCollection.AddElement(addElement);

adminManager.CommitChanges();

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"

Set providerDefinitionsSection = adminManager.GetAdminSection("system.ftpServer/providerDefinitions", "MACHINE/WEBROOT/APPHOST")
Set providerDefinitionsCollection = providerDefinitionsSection.Collection

Set addElement = providerDefinitionsCollection.CreateNewElement("add")
addElement.Properties.Item("name").Value = "FtpXmlAuthentication"
addElement.Properties.Item("type").Value = "FtpXmlAuthentication, FtpXmlAuthentication, version=1.0.0.0, Culture=neutral, PublicKeyToken=426f62526f636b73"
providerDefinitionsCollection.AddElement(addElement)

adminManager.CommitChanges()