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:
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:
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
En la barra de tareas, haga clic en Administrador del servidor.
En Administrador del servidor, haga clic en el menú Administrar y, después, haga clic en Agregar roles y características.
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.
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.
.
Haga clic en Siguiente y, después, en la página Seleccionar características, vuelva a hacer clic en Siguiente.
En la página Confirmar selecciones de instalación, haga clic en Instalar.
En la página Resultados , haga clic en Cerrar.
Windows 8 o Windows 8.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.
En Panel de control, haga clic en Programas y características y después en Activar o desactivar las características de Windows.
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.
Haga clic en OK.
Haga clic en Cerrar.
Windows Server 2008 R2
En la barra de tareas, haga clic en Inicio, seleccione Herramientas administrativas y, luego, haga clic en Administrador del servidor.
En el panel de jerarquía del Administrador del servidor, expanda Roles y, luego, haga clic en Servidor web (IIS).
En el panel Servidor web (IIS), desplácese hasta la sección Servicios de rol y, luego, haga clic en Agregar servicios de rol.
En la página Seleccionar servicios de rol del Asistente para agregar servicios de rol, expanda Servidor FTP.
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.
Haga clic en Next.
En la página Confirmar selecciones de instalación, haz clic en Instalar.
En la página Resultados , haga clic en Cerrar.
Windows 7
En la barra de tareas, haga clic en Inicio y, luego, haga clic en Panel de control.
En Panel de control, haga clic en Programas y características y después en Activar o desactivar las características de Windows.
Expanda Internet Information Services y, luego, Servidor FTP.
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.
Haga clic en OK.
Windows Server 2008 o Windows Vista
Descargue el paquete de instalación desde la siguiente dirección URL:
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.
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.
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.
- Haga clic en Proveedores personalizados... en el panel Acciones.
- Haga clic en Registrar.
- 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).
- 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.
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()