Compartir a través de


Configuración de FTP con autenticación de pertenencia de .NET en IIS 7

de Robert McMurray

Compatibilidad

Versión Notas
IIS 7.5 El servicio FTP 7.5 se distribuye como una característica de IIS 7.5 en Windows 7 y Windows Server 2008 R2.
IIS 7.0 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/downloads/microsoft/ftp.

Introducción

Microsoft ha creado un nuevo servicio FTP que se ha reescrito completamente para Windows Server® 2008. Este nuevo servicio FTP actualizado incorpora muchas características nuevas que permiten a los autores web publicar contenido mejor que antes, y ofrece a los administradores web más opciones de seguridad e implementación.

Este documento le guía a través de la configuración del sitio web predeterminado para la autenticación basada en pertenencia a FTP.

Nota:

Este documento se escribió con una instancia de SQL Server instalada en el servidor web local.

Requisitos previos

Los siguientes elementos son necesarios para completar los procedimientos de esta sección:

  1. IIS 7.0 debe instalarse en Windows Server 2008 y debe configurarse lo siguiente:

    • El sitio web predeterminado creado por la instalación de IIS 7.0 debe existir.
    • El Administrador de Internet Information Services debe estar instalado.
  2. El nuevo servicio FTP debe estar instalado. Puede descargar e instalar el servicio FTP desde el sitio web https://www.iis.net/ mediante uno de los vínculos siguientes:

    • FTP 7.5 para IIS 7.0 (x64)
    • FTP 7.5 para IIS 7.0 (x86)
  3. Establezca los permisos de contenido para permitir el acceso al proceso COM de extensibilidad que controla la autenticación:

    • Abra un símbolo del sistema.

    • Escriba el siguiente comando:

      ICACLS "%SystemDrive%\inetpub\ftproot" /Grant "Network Service":M /T
      
    • Cierre el símbolo del sistema.

Adición de la publicación FTP al sitio web predeterminado

En este primer paso, agrega la publicación de FTP al sitio web predeterminado y agregamos la configuración necesaria para permitir que la cuenta de administrador local edite el contenido.

  1. En Administrador de IIS 7.0, en el panel Conexiones, expanda el nodo Sitios del árbol y después haga clic en Sitio web predeterminado.

  2. Haga clic en Agregar publicación FTP en el panel Acciones.
    Screenshot of the I I S Manager Window displaying the Default Website page. Add F T P Publishing is circled in the Actions menu.

  3. Cuando aparezca el asistente Agregar publicación de sitios FTP:

    • Elija una dirección IP para el sitio FTP en la lista desplegable Dirección IP o acepte la selección predeterminada de "Todo sin asignar". Para este tutorial, escriba la dirección IP de bucle invertido local del equipo escribiendo "127.0.0.1" en el cuadro Dirección IP.

      Nota:

      Si usa IPv6, también debe agregar el enlace localhost IPv6 de "::1".

    • Normalmente, escribiría el puerto TCP/IP para el sitio FTP en el cuadro Puerto. Para este tutorial, acepte el puerto predeterminado de 21.

    • Para este tutorial, no usaremos un nombre de host, por lo que debe asegurarse de que el cuadro Host virtual esté en blanco.

    • Asegúrese de que la lista desplegable Certificado SSL esté establecida en "No seleccionado" y que esté seleccionada la opción Permitir SSL.

    • Cuando haya completado estos elementos, haga clic en Aceptar.

      Screenshot of the Add F T P Site dialog box.

  4. En la página siguiente del asistente, no configurará ningún ajuste de autenticación o autorización ya que estas opciones se configurarán más adelante. Haga clic en Finalizar para completar el asistente.
    Screenshot of the Add F T P Publishing dialog box.

Resumen

Para volver a resumir los elementos que completó en esta sección, agregamos la publicación FTP al "sitio web predeterminado":

  • Agregar un enlace FTP para el sitio web para la dirección IP de bucle invertido local en el puerto 21
  • Elegir no usar Capa de sockets seguros (SSL) para el sitio FTP.

Nota:

Todavía no ha habilitado ninguna configuración de autenticación o autorización.

Configuración de ASP.NET para la autenticación de pertenencia

Configuración de SQL Server local para la pertenencia a ASP.NET

En esta sección se describe el proceso básico para configurar ASP.NET para la autenticación de pertenencia. Para obtener información detallada, consulte la sección "Configurar ASP.NET para pertenencia" en el tema Procedimientos: Uso de la autenticación de formularios con SQL Server en ASP.NET 2.0 en el sitio web de MSDN.

Si no tiene acceso a un servidor SQL Server existente, debe instalar SQL Server.

Si aún no ha creado una base de datos de ASP.NET, debe compilar la base de datos de ASP.NET en SQL Server mediante el comando adecuado de la lista siguiente para la versión del marco que está usando:

  • Marco de 32 bits:

    "%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql.exe" -S localhost -A all -E
    
  • Marco de 64 bits:

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

Nota:

Para usar un servidor SQL server remoto en lugar de "localhost", como se muestra en el ejemplo anterior, consulte la sección "Consideraciones de implementación" en el artículo Procedimientos: Uso de la autenticación de formularios con SQL Server en ASP.NET 2.0.

Dado que el proceso COM de extensibilidad de FTP se ejecuta como "NT AUTHORITY\Network Service", debe agregar la cuenta "NT AUTHORITY\Network Service" a la base de datos de ASP.NET en SQL Server. Para ello, siga estos pasos:

  1. Abra administrador de SQL Server Enterprise.
  2. Cree un inicio de sesión de SQL Server para NT AUTHORITY\Network Service.
  3. Conceda al inicio de sesión acceso a la base de datos Aspnetdb mediante la creación de un usuario de base de datos.
  4. Agregue el usuario de base de datos al rol de base de datos aspnet_Membership_FullAccess.

Configuración de ASP.NET para la pertenencia a FTP

En los pasos siguientes se describe el proceso para configurar ASP.NET para permitir la autenticación de pertenencia para el acceso FTP.

  1. Con un editor de texto como el Bloc de notas de Windows, abra el archivo web.config raíz, que debe encontrarse en la ruta de acceso adecuada para la versión del marco que usa:

    • Marco de 32 bits:

      "%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\CONFIG\web.config"
      
    • Marco de 64 bits:

      "%SystemRoot%\Microsoft.NET\Framework64\v2.0.50727\CONFIG\web.config"
      
  2. Desplácese hasta la parte inferior y pegue el código siguiente antes de la etiqueta de cierre </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. Guarde y cierre el archivo web.config raíz.

Resumen

Ha configurado ASP.NET para la autenticación de pertenencia. Para volver a resumir los elementos que completó en esta sección, configuramos el servidor mediante:

  • Configuración de la suscripción de SQL Server local para ASP.NET
  • Configuración de ASP.NET para la pertenencia a FTP

Configuración de la autenticación de pertenencia a FTP

En esta sección se describe cómo configurar una base de datos de pertenencia mediante el sitio web predeterminado que se usa para crear usuarios que la autenticación de pertenencia basada en FTP usará más adelante. Para ello, siga estos pasos:

Pasos de requisitos previos

  1. Abra Administrador de Internet Information Services (IIS).
  2. Expanda el equipo en el nodo superior del árbol Conexiones.
  3. Expanda el nodo Sitios en el árbol.

Ajustes de la configuración de la pertenencia a .NET

Paso 1: Agregar una cadena de conexión

Resalte el Sitio web predeterminado en el árbol, haga doble clic en Cadenas de conexión y, a continuación, siga estos pasos:

  1. Haga clic en Agregar... en el menú Acciones.

  2. Configure las siguientes opciones:

    • Nombre: "FtpLocalSQLServer"
    • Servidor: "localhost"
    • Base de datos: "aspnetdb"
  3. Haga clic en OK.

Paso 2: Agregar un proveedor de roles

Resalte el Sitio web predeterminado en el árbol, haga doble clic en Proveedores y, a continuación, siga estos pasos:

  1. Elija Roles de .NET en la lista desplegable.

  2. Haga clic en Agregar... en el menú Acciones.

  3. Elija SqlRoleProvider en la lista desplegable.

  4. Configure las siguientes opciones:

    • Nombre: "FtpSqlRoleProvider"
    • Nombre de la cadena de conexión: "FtpLocalSQLServer"
    • Nombre de aplicación: "/"
  5. Haga clic en OK.

Paso 3: Agregar un proveedor de pertenencia

Resalte el Sitio web predeterminado en el árbol, haga doble clic en Proveedores y, a continuación, siga estos pasos:

  1. Elija Usuarios de .NET en la lista desplegable.

  2. Haga clic en Agregar... en el menú Acciones.

  3. Elija SqlMembershipProvider en la lista desplegable.

  4. Configure las siguientes opciones:

    • Nombre: "FtpSqlMembershipProvider"
    • Nombre de la cadena de conexión: "FtpLocalSQLServer"
    • Nombre de aplicación: "/"
  5. Haga clic en OK.

Paso 4: Agregar un rol para la pertenencia a FTP

Resalte el Sitio web predeterminado en el árbol, haga doble clic en Roles de .NET y, a continuación, siga estos pasos:

  1. Es posible que vea un cuadro de diálogo de error sobre la conexión. Si es así, haga clic en Aceptar para cerrar el cuadro de diálogo de error y, a continuación, configure el proveedor predeterminado mediante los pasos siguientes:

    • Haga clic en Establecer proveedor predeterminado... en el panel Acciones.
    • Elija FtpSqlRoleProvider en la lista desplegable.
    • Haga clic en OK.
  2. Haga clic en Agregar... en el menú Acciones.

  3. Configure las siguientes opciones:

    • Nombre: "ftprole"
  4. Haga clic en OK.

Paso 5: Agregar una cuenta de usuario para la pertenencia a FTP

Resalte el Sitio web predeterminado en el árbol, haga doble clic en Usuarios de .NET y, a continuación, siga estos pasos:

  1. Es posible que vea un cuadro de diálogo de error sobre la conexión. Si es así, haga clic en Aceptar para cerrar el cuadro de diálogo de error y, a continuación, configure el proveedor predeterminado mediante los pasos siguientes:

    • Haga clic en Establecer proveedor predeterminado... en el panel Acciones.
    • Elija FtpSqlMembershipProvider en la lista desplegable.
    • Haga clic en OK.
  2. Haga clic en Agregar en el menú Acciones.

  3. Configure las siguientes opciones:

    • Nombre de usuario: "ftpuser"
    • Correo electrónico: "ftpuser@localhost.local"
    • Contraseña: "P@ssw0rd"
  4. Haga clic en Next.

  5. Agregue el usuario a "ftprole" y haga clic en Finalizar.

Habilitación de la autenticación de pertenencia para FTP

Configuración de FTP para la autenticación de pertenencia

Resalte el Sitio web predeterminado en el árbol, haga doble clic en Autenticación FTP y siga estos pasos:

  1. Haga clic en Proveedores personalizados... en el panel Acciones.
  2. Active la casilla AspNetAuth.
  3. Haga clic en OK.

Ahora puede autorizar al usuario FTP mediante uno de los dos métodos:

Método 1: Configurar una regla de autorización FTP para un rol de pertenencia

Resalte el Sitio web predeterminado en el árbol, haga doble clic en Reglas de autorización FTP y, a continuación, siga estos pasos:

  1. Haga clic en Agregar regla de permiso en el panel Acciones.
  2. Seleccione Roles especificados o grupos de usuarios para la opción de acceso.
  3. Escriba "ftprole" como nombre de rol.
  4. Seleccione Lectura y Escritura para la opción Permisos.
  5. Haga clic en OK.

Método 2: Configurar una regla de autorización FTP para un usuario de pertenencia

Resalte el Sitio web predeterminado en el árbol, haga doble clic en Reglas de autorización FTP y, a continuación, siga estos pasos:

  1. Haga clic en Agregar regla de permiso en el panel Acciones.
  2. Seleccione Usuarios especificados para la opción de acceso.
  3. Escriba "ftpuser" para el nombre de usuario.
  4. Seleccione Lectura y Escritura para la opción Permisos.
  5. Haga clic en OK.

Resumen

Para volver a resumir los elementos que completó en esta sección, configuramos el servidor mediante:

  • Configuración de las opciones de pertenencia de .NET:

    • Adición de una cadena de conexión
    • Adición de un proveedor de roles
    • Creación de un proveedor de pertenencia
    • Agregar un rol para la pertenencia a FTP
    • Adición de una cuenta de usuario para la pertenencia a FTP
  • Habilitación de la autenticación de pertenencia para FTP:

    • Configuración de la autenticación FTP para la pertenencia
    • Configuración de una regla de autorización FTP para un usuario de pertenencia
    • Configuración de una regla de autorización FTP para un rol de pertenencia

Solución de problemas

Si usa roles de pertenencia, es posible que tenga que instalar la revisión que se describe en el siguiente artículo de Microsoft Knowledge Base:

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

Al intentar iniciar sesión, recibirá la siguiente respuesta:

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.

Este error se produce cuando no ha configurado SQL Server para aceptar conexiones remotas.