Compartilhar via


Como Adicionar Definições de Provedor FTP <add>

Visão geral

O elemento <add> do elemento <providerDefinitions> especifica as informações de registro para um provedor de código gerenciado ou código nativo (COM).

A partir do FTP 7.5, o serviço FTP dá suporte à extensibilidade para autenticação personalizada e funções, log e pesquisas de diretório residencial. Ao criar um provedor de extensibilidade, você deve primeiro registrá-lo no GAC (Cache de Assembly Global do .NET), para provedores de código gerenciado, ou no registro do sistema, para provedores com código nativo (COM). Para obter informações adicionais sobre como criar provedores personalizados FTP, confira a seguinte seção no site IIS.net da Microsoft:

Desenvolvimentos para FTP 7.5

Compatibilidade

Versão Observações
IIS 10.0 O elemento <add> não foi modificado no IIS 10.0.
IIS 8.5 O elemento <add> não foi modificado no IIS 8.5.
IIS 8.0 O elemento <add> não foi modificado no IIS 8.0.
IIS 7.5 O elemento <add> do elemento <providerDefinitions> é fornecido como um recurso do IIS 7.5.
IIS 7.0 O elemento <add> do elemento <providerDefinitions> foi introduzido no FTP 7.0, que era um download separado para o IIS 7.0.
IIS 6,0 O serviço FTP no IIS 6.0 não deu suporte à extensibilidade.

Observação

Os serviços FTP 7.0 e FTP 7.5 eram fornecidos fora de banda para o IIS 7.0, o que exigia o download e a instalação de módulos do seguinte URL:

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

Com o Windows 7 e o Windows Server 2008 R2, o serviço FTP 7.5 é fornecido como um recurso para o IIS 7.5 e, portanto, o download do serviço FTP não é mais necessário.

Instalação

Para dar suporte à publicação FTP para seu servidor Web, você deve instalar o serviço FTP. Para fazer isso, execute as etapas a seguir.

Windows Server 2012 R2 ou Windows Server 2012

  1. Na barra de tarefas, clique em Gerenciador do Servidor.

  2. No Gerenciador do Servidor, clique no menu Gerenciar e clique em Adicionar Funções e Recursos.

  3. No assistente Adicionar Funções e Recursos, clique em Avançar. Selecione o tipo de instalação e clique em Avançar. Selecione o servidor de destino e clique em Avançar.

  4. Na página Funções de servidor, expanda Servidor Web (IIS) e, em seguida, selecione Servidor FTP.

    Observação

    Para dar suporte à autenticação do ASP.Membership ou do Gerenciador do IIS para o serviço FTP, você precisará selecionar a Extensibilidade de FTP além do Serviço FTP.
    Screenshot of F T P Service and F T P Extensibility selected in a Windows Server 2012 interface. .

  5. Selecione Avançar e, em seguida, na página Selecionar recursos, selecione Avançar novamente.

  6. Na página Confirmar seleções de instalação, clique em Instalar.

  7. Na página Resultados , clique em Fechar.

Windows 8 ou Windows 8.1

  1. Na tela Iniciar, mova o ponteiro até o canto inferior esquerdo, clique com o botão direito do mouse no botão Iniciar e clique em Painel de Controle.

  2. Em Painel de Controle, clique em Programas e Recursos e clique em Ativar ou desativar recursos do Windows.

  3. Expanda Serviços de Informações da Internet e selecione Servidor FTP.

    Observação

    Para dar suporte à autenticação do ASP.Membership ou do Gerenciador do IIS para o serviço FTP, você também precisará selecionar Extensibilidade de FTP.
    Screenshot of F T P Service and F T P Extensibility selected in a Windows 8 interface.

  4. Clique em OK.

  5. Clique em Fechar.

Windows Server 2008 R2

  1. Na barra de tarefas, clique em Iniciar, vá para Ferramentas Administrativas e clique em Gerenciador do Servidor.

  2. No painel de hierarquia do Gerenciador do Servidor, expanda Funções e clique em Servidor Web (IIS).

  3. No painel Servidor Web (IIS), role até a seção Serviços de Função e clique em Adicionar Serviços de Função.

  4. Na página Selecionar Serviços de Função do Assistente para Adicionar Serviços de Função, expanda Servidor FTP.

  5. Selecione Serviço FTP.

    Observação

    Para dar suporte à autenticação do ASP.Membership ou do Gerenciador do IIS para o serviço FTP, você também precisará selecionar Extensibilidade de FTP.
    Screenshot of F T P Service and F T P Extensibility selected in a Windows Server 2008 interface.

  6. Clique em Avançar.

  7. Na página Confirmar Seleções de Instalação, clique em Instalar.

  8. Na página Resultados , clique em Fechar.

Windows 7

  1. Na barra de tarefas, clique em Iniciar e, depois, em Painel de Controle.

  2. Em Painel de Controle, clique em Programas e Recursos e clique em Ativar ou desativar Recursos do Windows.

  3. Expanda Serviços de Informações da Internet e, em seguida, Servidor FTP.

  4. Selecione Serviço FTP.

    Observação

    Para dar suporte à autenticação do ASP.Membership ou do Gerenciador do IIS para o serviço FTP, você também precisará selecionar Extensibilidade de FTP.
    Screenshot of F T P Service and F T P Extensibility selected in a Windows 7 interface.

  5. Clique em OK.

Windows Server 2008 ou Windows Vista

  1. Baixe o pacote de instalação do seguinte URL:

  2. Siga as instruções no seguinte passo a passo para instalar o serviço FTP:

Instruções

Como adicionar um provedor de autenticação personalizada de código gerenciado para um site FTP

Observação

Essas etapas pressupõem que um provedor de autenticação FTP personalizado já foi instalado e registrado no GAC (Cache de Assembly Global) do servidor. Para obter mais informações sobre como registrar assemblies gerenciados, consulte o tópico Ferramenta de Cache de Assembly Global (Gacutil.exe) no site do MSDN da Microsoft.

  1. Determine as informações do assembly para o provedor de extensibilidade:

    • No Windows Explorer, abra o caminho "C:\Windows\assembly", onde C: é a unidade do sistema operacional.
    • Localize o assembly. Por exemplo, FtpAuthenticationDemo.
    • Clique com o botão direito do mouse no assembly e em Propriedades.
    • Copie o valor de Cultura. Por exemplo, Neutro.
    • Copie o número de Versão. Por exemplo: 1.0.0.0.
    • Copie o valor do Token de Chave Pública. Por exemplo, 426f62526f636b73.
    • Clique em Cancelar.
  2. Adicione o provedor de extensibilidade à lista global de provedores de autenticação FTP:

    • Abra o Gerenciador do IIS (Serviços de Informações da Internet) .
    • Clique no nome do computador no painel Conexões.
    • Clique duas vezes na Autenticação FTP na janela principal.
      Screenshot of Anonymous Authentication selected in the F T P Authentication pane.
    • Selecione Provedores Personalizados no painel Ações.
    • Clique em Registrar.
      Screenshot of an empty Custom Providers dialog.
    • Insira um nome amigável para o provedor de autenticação personalizado na caixa Nome. Por exemplo, FtpAuthenticationDemo.
    • Clique em Provedor Gerenciado (.NET).
      Screenshot of an empty Add Custom Authentication Provider dialog.
    • Insira as informações do assembly para o provedor de extensibilidade usando as informações copiadas antes. Por exemplo:
      FtpAuthentication.FtpAuthDemo, FtpAuthenticationDemo, version=1.0.0.0, Culture=neutral, PublicKeyToken=426f62526f636b73
    • Clique em OK.
    • Desmarque a caixa de seleção do provedor de autenticação personalizado na lista de provedores.
    • Clique em OK.
  3. Adicione o provedor de autenticação personalizada para um site FTP:

    • Abra um site FTP no Gerenciador do IIS (Serviços de Informações da Internet).
    • Clique duas vezes na Autenticação FTP na janela principal.
    • Selecione Provedores Personalizados no painel Ações.
    • Marque para selecionar e habilitar o provedor de autenticação personalizado na lista de provedores.
    • Clique em OK.

Configuração

O elemento <add> do elemento <providerDefinitions> é configurado no nível global no ApplicationHost.config.

Atributos

Atributo Descrição
name Atributo de cadeia de caracteres obrigatório.

Especifica o nome amigável de um provedor personalizado.

Nenhum valor padrão.
type Atributo de cadeia de caracteres opcional.

Especifica o tipo para um provedor de código gerenciado.

Nenhum valor padrão.
clsid Atributo de cadeia de caracteres opcional.

Especifica a ID da classe COM para um provedor de código nativo.

Nenhum valor padrão.

Elementos filho

Nenhum.

Exemplo de configuração

O exemplo a seguir ilustra várias configurações no elemento <system.ftpServer> global para um servidor. Mais especificamente, as configurações neste exemplo demonstram como:

  • Habilite o cache de credenciais FTP e especifique um tempo limite de 10 minutos (600 segundos).

  • Configure a porta baixa como 5000 e a porta alta como 6000 para comunicações de canal de dados.

  • Habilite o registro em log e especifique que os arquivos de log serão mantidos por site e que os arquivos de log serão girados diariamente por hora UTC.

  • Especifique um provedor FTP personalizado e especifique um parâmetro personalizado para esse provedor.

  • Especifique restrições de IP globais que permitem o acesso FTP do host local e negam acesso ao bloco 169.254.0.0 a 169.254.255.255 de endereços IP.

  • Configure a filtragem de solicitações com as seguintes opções:

    • Bloqueie o acesso FTP ao diretório virtual _vti_bin, que é usado com as Extensões de Servidor do FrontPage.
    • Bloqueie vários tipos de arquivo associados a executáveis.
    • Especifique 100 MB como o tamanho máximo do arquivo.
  • Adicione uma regra de autorização global que permite o acesso para o grupo de administradores.

  • Especifique que a sintaxe de nome de domínio pode ser usada para nomes do 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>

Exemplo de código

Os exemplos a seguir adicionam uma definição de provedor FTP personalizado a um servidor.

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

Observação

Defina o parâmetro commit para apphost quando usar AppCmd.exe para definir essas configurações. Isso confirma as definições de configuração para a seção de local apropriado no arquivo 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()