Compartir a través de


Definiciones de proveedor de FTP <providerDefinitions>

Información general

El elemento <providerDefinitions> especifica la colección de proveedores FTP personalizados. El elemento <providerDefinitions> contiene una colección de instrucciones <add>, cada una de las cuales registra un proveedor de código administrado o código nativo (COM). El elemento <providerDefinitions> también contiene un elemento <activation>, que define una colección de pares clave-valor personalizados que especifican los parámetros que un proveedor personalizado requiere.

A partir de FTP 7.5, el servicio FTP admite la extensibilidad para la autenticación y los roles personalizados, el registro y las búsquedas de directorio principal. Al crear un proveedor de extensibilidad, primero debe registrarlo en la memoria caché global de ensamblados (GAC) de .NET para proveedores de código administrado o en el registro del sistema para proveedores de código nativo (COM). Para obtener información adicional sobre cómo crear proveedores personalizados de FTP, vea al siguiente sección en el sitio web IIS.net de Microsoft:

Desarrollo para FTP 7.5

Compatibilidad

Versión Notas
IIS 10.0 El elemento <providerDefinitions> no se modificó en IIS 10.0.
IIS 8.5 El elemento <providerDefinitions> no se modificó en IIS 8.5.
IIS 8.0 El elemento <providerDefinitions> no se modificó en IIS 8.0.
IIS 7.5 El elemento <providerDefinitions> del elemento <system.ftpServer> se incluye como una característica de IIS 7.5.
IIS 7.0 El elemento <providerDefinitions> del elemento <system.ftpServer> se introdujo en FTP 7.0, que era una descarga independiente para IIS 7.0.
IIS 6,0 El servicio FTP de IIS 6.0 no admitía la extensibilidad.

Nota:

Los servicios FTP 7.0 y FTP 7.5 se enviaron fuera de banda para IIS 7.0, lo que requería descargar e instalar el servicio desde la siguiente dirección URL:

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

Con Windows 7 y Windows Server 2008 R2, el servicio FTP 7.5 se incluye como característica para IIS 7.5, por lo que la descarga del servicio FTP ya no es necesaria.

Configuración

Para admitir la publicación de FTP para el servidor web, debe instalar el servicio FTP. Para ello, siga estos pasos.

Windows Server 2012 o Windows Server 2012 R2

  1. En la barra de tareas, haga clic en Administrador del servidor.

  2. En Administrador del servidor, haga clic en el menú Administrar y, después, haga clic en Agregar roles y características.

  3. En el asistente para Agregar roles y características, haga clic en Siguiente. Seleccione el tipo de instalación y haga clic en Siguiente. Seleccione el servidor de destino y haga clic en Siguiente.

  4. En la página Roles de servidor, expanda Servidor web (IIS) y, después, seleccione Servidor FTP.

    Nota:

    Para admitir la autenticación ASP.Membership o la autenticación del Administrador de IIS para el servicio FTP, también deberá seleccionar Extensibilidad de FTP, además de Servicio FTP.

    Screenshot of the Roles dialog box. F T P Extensibility is highlighted in the drop down menu. .

  5. Haga clic en Siguiente y, después, en la página Seleccionar características, vuelva a hacer clic en Siguiente.

  6. En la página Confirmar selecciones de instalación, haga clic en Instalar.

  7. En la página Resultados , haga clic en Cerrar.

Windows 8 o Windows 8.1

  1. En la pantalla Inicio, mueva el puntero hasta la esquina inferior izquierda, haga clic con el botón derecho en el botón Inicio y, a continuación, haga clic en Panel de control.

  2. En Panel de control, haga clic en Programas y características y después en Activar o desactivar las características de Windows.

  3. Expanda Internet Information Services y, después, seleccione Servidor FTP.

    Nota:

    Para admitir la autenticación ASP.Membership o la autenticación del Administrador de IIS para el servicio FTP, también deberá seleccionar Extensibilidad de FTP.

    Screenshot of Windows Features dialog box. F T P Extensibility is highlighted.

  4. Haga clic en OK.

  5. Haga clic en Cerrar.

Windows Server 2008 R2

  1. En la barra de tareas, haga clic en Inicio, seleccione Herramientas administrativas y, luego, haga clic en Administrador del servidor.

  2. En el panel de jerarquía del Administrador del servidor, expanda Roles y, luego, haga clic en Servidor web (IIS).

  3. En el panel Servidor web (IIS), desplácese hasta la sección Servicios de rol y, luego, haga clic en Agregar servicios de rol.

  4. En la página Seleccionar servicios de rol del Asistente para agregar servicios de rol, expanda Servidor FTP.

  5. Seleccione Servicio FTP.

    Nota:

    Para admitir la autenticación ASP.Membership o la autenticación del Administrador de IIS para el servicio FTP, también deberá seleccionar Extensibilidad de FTP.

    Screenshot of the Select Role Service page. F T P Service is highlighted.

  6. Haga clic en Next.

  7. En la página Confirmar selecciones de instalación, haz clic en Instalar.

  8. En la página Resultados , haga clic en Cerrar.

Windows 7

  1. En la barra de tareas, haga clic en Inicio y, luego, haga clic en Panel de control.

  2. En Panel de control, haga clic en Programas y características y después en Activar o desactivar las características de Windows.

  3. Expanda Internet Information Services y, luego, Servidor FTP.

  4. Seleccione Servicio FTP.

    Nota:

    Para admitir la autenticación ASP.Membership o la autenticación del Administrador de IIS para el servicio FTP, también deberá seleccionar Extensibilidad de FTP.

    Screenshot of the Windows Features dialog box with the features menu expanded.

  5. Haga clic en OK.

Windows Server 2008 o Windows Vista

  1. Descargue el paquete de instalación desde la siguiente dirección URL:

  2. Siga las instrucciones del siguiente tutorial para instalar el servicio FTP:

Procedimientos

Procedimiento para agregar un proveedor de autenticación personalizada de código administrado para un sitio FTP

Nota:

En estos pasos se supone que ya se ha instalado y registrado un proveedor de autenticación FTP personalizado en la caché global de ensamblados (GAC) del servidor. Para más información sobre cómo registrar ensamblados administrados, vea el tema Herramienta de caché global de ensamblados (Gacutil.exe) en el sitio web MSDN de Microsoft.

  1. Determine la información del ensamblado para el proveedor de extensibilidad:

    • En el Explorador de Windows, abra la ruta de acceso "C:\Windows\ensamblado", donde C: es la unidad del sistema operativo.
    • Busque el ensamblado. Por ejemplo, FtpAuthenticationDemo.
    • Haga clic con el botón derecho en el ensamblado y, después, haga clic en Propiedades.
    • Copie el valor Referencia cultural. Por ejemplo, Neutro.
    • Copie el número de Versión. Por ejemplo, 1.0.0.0.
    • Copie el valor del token de clave pública. Por ejemplo, 426f62526f636b73.
    • Haga clic en Cancelar.
  2. Agregue el proveedor de extensibilidad a la lista global de proveedores de autenticación FTP:

    • Abra el Administrador de Internet Information Services (IIS) .
    • Haga clic en el nombre de equipo en el panel Conexiones.
    • Haga doble clic en Autenticación FTP en la ventana principal.
      Screenshot of the I I S Manager window displaying the F T P Authentication page.
    • Haga clic en Proveedores personalizados... en el panel Acciones.
    • Haga clic en Registrar.
      Screenshot of the Custom Providers dialog box.
    • Escriba un nombre descriptivo para el proveedor de autenticación personalizado en el cuadro Nombre. Por ejemplo, FtpAuthenticationDemo.
    • Haga clic en Proveedor de datos administrados (.NET).
      Screenshot of the Add Custom Authentication Provider dialog box.
    • Escriba la información de ensamblado para el proveedor de extensibilidad mediante la información que ha copiado antes. Por ejemplo:
      FtpAuthentication.FtpAuthDemo, FtpAuthenticationDemo, version=1.0.0.0, Culture=neutral, PublicKeyToken=426f62526f636b73
    • Haga clic en OK.
    • Desactive la casilla del proveedor de autenticación personalizado en la lista de proveedores.
    • Haga clic en OK.
  3. Agregue el proveedor de autenticación personalizado para un sitio de FTP:

    • Abra un sitio FTP en el Administrador de Internet Information Services (IIS).
    • Haga doble clic en Autenticación FTP en la ventana principal.
    • Haga clic en Proveedores personalizados... en el panel Acciones.
    • Active esta opción para seleccionar y habilitar el proveedor de autenticación personalizado en la lista de proveedores.
    • Haga clic en OK.

Configuración

El elemento <providerDefinitions> se configura en el nivel global en ApplicationHost.config.

Atributos

Ninguno.

Elementos secundarios

Elemento Descripción
add Elemento opcional.

Especifica la información de registro de un proveedor de código administrado o de código nativo (COM).
activation Elemento opcional.

Especifica una colección de pares nombre/valor personalizados que definen los parámetros que requiere un proveedor personalizado.

Nota: Este elemento se agregó en FTP 7.5.

Ejemplo de configuración

En el ejemplo siguiente se muestran varios valores de configuración en el elemento <system.ftpServer> global para un servidor. En concreto, la configuración de este ejemplo muestra cómo:

  • Habilite el almacenamiento en caché de credenciales de FTP y especifique un tiempo de espera de 10 minutos (600 segundos).

  • Configure el puerto bajo como 5000 y el puerto alto como 6000 para las comunicaciones del canal de datos.

  • Habilite el registro y especifique que los archivos de registro se conserven por sitio y que roten diariamente por hora UTC.

  • Especifique un proveedor FTP personalizado así como un parámetro personalizado para ese proveedor.

  • Especifique restricciones de dirección IP globales que permitan el acceso FTP desde el host local y denieguen el acceso al bloque de direcciones IP comprendido entre 169.254.0.0 y 169.254.255.255.

  • Configure el filtrado de solicitudes con las siguientes opciones:

    • Bloquear el acceso FTP al directorio virtual _vti_bin, que se usa con las Extensiones de servidor de FrontPage.
    • Bloquee varios tipos de archivo asociados a los ejecutables.
    • Especifique 100 MB como tamaño máximo de archivo.
  • Agregue una regla de autorización global que permita el acceso para el grupo de administradores.

  • Especifique que la sintaxis de nombre de dominio se puede usar para los nombres de host virtual 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>

Código de ejemplo

En los ejemplos siguientes se agrega una definición de proveedor FTP personalizada a un servidor y, a continuación, se agrega un parámetro de datos para ese proveedor.

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

appcmd.exe set config -section:system.ftpServer/providerDefinitions /+"activation.[name='FtpXmlAuthentication']" /commit:apphost

appcmd.exe set config -section:system.ftpServer/providerDefinitions /+"activation.[name='FtpXmlAuthentication'].[key='xmlFileName',value='C:\Inetpub\wwwroot\App_Data\Users.xml']" /commit:apphost

Nota:

Debe asegurarse de establecer el parámetrocommit en apphost cuando use AppCmd.exe para configurar estos valores. Esto confirma los valores de configuración en la sección de ubicación adecuada del archivo 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);

         ConfigurationElementCollection activationCollection = providerDefinitionsSection.GetCollection("activation");
         ConfigurationElement providerDataElement = activationCollection.CreateElement("providerData");
         providerDataElement["name"] = @"FtpXmlAuthentication";

         ConfigurationElementCollection providerDataCollection = providerDataElement.GetCollection();
         ConfigurationElement addElement1 = providerDataCollection.CreateElement("add");
         addElement1["key"] = @"xmlFileName";
         addElement1["value"] = @"C:\Inetpub\wwwroot\App_Data\Users.xml";
         providerDataCollection.Add(addElement1);
         activationCollection.Add(providerDataElement);

         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)

      Dim activationCollection As ConfigurationElementCollection = providerDefinitionsSection.GetCollection("activation")
      Dim providerDataElement As ConfigurationElement = activationCollection.CreateElement("providerData")
      providerDataElement("name") = "FtpXmlAuthentication"

      Dim providerDataCollection As ConfigurationElementCollection = providerDataElement.GetCollection
      Dim addElement1 As ConfigurationElement = providerDataCollection.CreateElement("add")
      addElement1("key") = "xmlFileName"
      addElement1("value") = "C:\Inetpub\wwwroot\App_Data\Users.xml"
      providerDataCollection.Add(addElement1)
      activationCollection.Add(providerDataElement)

      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);

var activationCollection = providerDefinitionsSection.ChildElements.Item("activation").Collection;
var providerDataElement = activationCollection.CreateNewElement("providerData");
providerDataElement.Properties.Item("name").Value = "FtpXmlAuthentication";
var providerDataCollection = providerDataElement.Collection;

var addElement1 = providerDataCollection.CreateNewElement("add");
addElement1.Properties.Item("key").Value = "xmlFileName";
addElement1.Properties.Item("value").Value = "C:\\Inetpub\\wwwroot\\App_Data\\Users.xml";
providerDataCollection.AddElement(addElement1);
activationCollection.AddElement(providerDataElement);

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)

Set activationCollection = providerDefinitionsSection.ChildElements.Item("activation").Collection
Set providerDataElement = activationCollection.CreateNewElement("providerData")
providerDataElement.Properties.Item("name").Value = "FtpXmlAuthentication"
Set providerDataCollection = providerDataElement.Collection

Set addElement1 = providerDataCollection.CreateNewElement("add")
addElement1.Properties.Item("key").Value = "xmlFileName"
addElement1.Properties.Item("value").Value = "C:\Inetpub\wwwroot\App_Data\Users.xml"
providerDataCollection.AddElement(addElement1)
activationCollection.AddElement(providerDataElement)

adminManager.CommitChanges()