Como: Compilar e executar o exemplo de provedor configuração protegida

Os tópicos nesta seção incluem o código para um exemplo de provedor de configuração protegido.O provedor exemplo usa a classe TripleDESCryptoServiceProvider para criptografar e descriptografar seções de configuração no arquivo Web.config.

Este tópico descreve como criar o exemplo e configurar um aplicativo ASP.NET para usar o provedor exemplo.O provedor exemplo de configuração protegida foi fornecido em Visual Basic e em C# e pode ser encontrado em Exemplo de Implementação do Provedor de Configuração Protegida.

Criando o provedor Exemplo

Você deve criptografar seções do arquivo Web.config usando a ferramenta Aspnet_regiis.exe.A descriptografia pode ser realizada ou explicitamente usando a ferramenta Aspnet_regiis.exe ou automaticamente pelo ASP.NET em tempo de execução.Portanto, você deve tornar o tipo de provedor de exemplo disponível para a ferramenta Aspnet_regiis.exe e ao ASP.NET.Isso é conseguido com facilidade compilar o provedor com um nome forte e colocá-lo no cache global de assemblies (GAC).

Observação:

A ferramenta Strong Name (Sn.exe) e a ferramenta Global Assembly Cache (Gacutil.exe) estão disponíveis como parte da instalação do Windows Software Development Kit (SDK).Para obter mais informações, consulte Ferramenta Strong Name (Sn.exe) e Global ferramenta cache assembly (Gacutil.exe) .

Para criar o provedor exemplo

  1. Na linha de comando do Windows, execute o seguinte comando:

    Sn.exe -k keys.snk
    

    Isso gera um par de chaves de nomes fortes.

    Observação:

    Se você não puder executar o comando, você deve adicionar o caminho do .NET Framework para a variável PATH antes de executar o comando.No Windows, clique com o botão direito do mouse My Computer, clique em Properties, clique na guia Advanced e, em seguida, clique no botão Environment Variables.Na lista Variáveis do sistema, clique duas vezes na variável Path.Na caixa de texto Variable value, adicione um ponto-e-vírgula (;) até o final dos valores existentes na caixa de texto e digite o caminho da instalação do .NET Framework.The .NET Framework is usually installed in the Windows installation folder at \Microsoft.NET\Framework\versionNumber.

  2. Crie um arquivo de programa denominado TripleDESProtectedConfigurationProvider (com a extensão de nome do arquivo .vb ou. cs, dependendo de que linguagem de programação você está usando) e copie nele o código do provedor exemplo de Exemplo de Implementação do Provedor de Configuração Protegida.

  3. Compile o código do provedor exemplo e atribua ao assembly resultante a chave de nome forte usando o comando a seguir:

    vbc /out:TripleDESProtectedConfigurationProvider.dll /t:library TripleDESProtectedConfigurationProvider.vb /r:System.Configuration.dll /keyfile:keys.snk
    
    csc /out:TripleDESProtectedConfigurationProvider.dll /t:library TripleDESProtectedConfigurationProvider.cs /r:System.Configuration.dll /keyfile:keys.snk
    
  4. Instale o assembly no global assembly cache usando o seguinte comando:

    gacutil.exe -i TripleDESProtectedConfigurationProvider.dll
    
    Observação:

    Se você precisar remover o assembly do GAC, você pode usar a ferramenta Gacutil.exe com o seguinte comando:

    gacutil.exe -u TripleDESProtectedConfigurationProvider
    

Criando e armazenando uma chave de criptografia

O exemplo TripleDES de provedor de configuração protegida criptografa e descriptografa as seções de configuração usando uma chave de criptografia armazenada em um arquivo de texto como uma string hexadecimal.Você cria o arquivo de chave usando código incluso no provedor exemplo.No arquivo chave, a chave é armazenada na primeira linha do arquivo e o vetor (IV) na segunda, conforme mostrado no exemplo a seguir:

EBBCB17E444EBB9EA2EA7EE3E0FD9E108C6E75A90101D017
8C979426981FD2A6

Após criar o arquivo de chave, você deve guardá-lo em um lugar seguro no servidor, e depois restringir o acesso ao arquivo de chave para a identidade do aplicativo ASP.NET, para a conta SYSTEM, e para administradores.Isso protege a chave de ser acessada por um invasor e tornar a criptografia inútil.

Para criar uma chave de criptografia

  1. Crie um aplicativo console chamado CreateKey.

  2. Copie o código a seguir como módulo principal do aplicativo.

    Imports System
    Imports Samples.AspNet.ProtectedConfiguration
    
    Public Class CreateKey
        Public Shared Sub Main(args() As String)
        Dim filePath As String = args(0)
        Dim provider As TripleDESProtectedConfigurationProvider = _
            New TripleDESProtectedConfigurationProvider()
        provider.CreateKey(filePath)
        Console.WriteLine("New TripleDES key written to '{0}'", filePath)
      End Sub
    End Class
    
    using System;
    using Samples.AspNet.ProtectedConfiguration;
    public class CreateKey
    {
        public static void Main(string[] args)
        {
            string filePath = args[0];
            TripleDESProtectedConfigurationProvider provider = 
                new TripleDESProtectedConfigurationProvider();
            provider.CreateKey(filePath);
            Console.WriteLine("New TripleDES Key written to '{0}'", filePath);
        }
    }
    

    O exemplo de provedor de configuração protegida inclui um método público CreateKey que toma um caminho de arquivo como entrada, gera uma nova chave, e grava a nova chave no arquivo especificado.O código no aplicativo do console cria uma instância do provedor de configuração protegida e chama o seu método CreateKey.O código toma um caminho de arquivo como um argumento da linha de comando e cria um novo arquivo de chave na localidade especificada.

  3. Na linha de comando do Windows, execute o aplicativo de console usando a sintaxe como o seguinte:

    CreateKey "c:\WebSites\SampleApplication\App_Data\Keys.txt"
    

Usando o provedor exemplo em um aplicativo ASP.NET

Após compilar o provedor e criar uma chave de criptografia, você pode configurar um aplicativo ASP.NET para usar o provedor.

Para usar o provedor exemplo em um aplicativo ASP.NET

  1. Abra o arquivo Web.config do seu site da Web.Se o aplicativo não possui um arquivo Web.config, crie um arquivo de texto denominado Web.config na pasta raiz do site e adicione os seguintes elementos:

    <?xml version="1.0"?>
    <configuration>
      <system.web>
    
      </system.web>
    </configuration>
    
  2. Dentro da seção configuration (como um parceiro do elemento system.web), adicione os seguintes elementos realçados:

    <configuration>
       <configProtectedData>     <providers>       <add name="TripleDESProvider"       type="Samples.AspNet.ProtectedConfiguration.TripleDESProtectedConfigurationProvider,                  TripleDESProtectedConfigurationProvider,                  Version=0.0.0.0, CultureInfo=neutral,                  PublicKeyToken=a5a9eb4fc5306403,                  processorArchitecture=MSIL"            keyFilePath="c:\WebSites\SampleApplication\App_Data\Keys.txt" />     </providers>   </configProtectedData>
    </configuration>
    
    Observação:

    Altere o valor do atributo keyFilePath para corresponder à localidade onde você armazenou o arquivo chave criado anteriormente.

  3. Na seção configuration, adicione uma seção <connectionStrings> e uma ou mais sequências de conexão.

    O exemplo a seguir mostra uma seção connectionStrings contendo uma string de conexão para o banco de dados de exemplo SQL Server Northwind.Assume-se que o nome de instância do SQL Server seja SampleSQLServer.

    <connectionStrings>
      <add name="NorthwindConnectionString" 
        connectionString="Data Source=SampleSQLServer;Initial Catalog=Northwind;Persist Security Info=True;" Integrated Security=SSPI;"
        providerName="System.Data.SqlClient" />
    </connectionStrings>
    
    Observação:

    Altere o valor connectionString para incluir informações de conexão para o banco de dados do SQL Server que você deseja usar.

  4. Salve o arquivo e feche-o.

  5. Na linha de comando do Windows, execute o seguinte comando para criptografar a seção connectionStrings do arquivo Web.config:

    aspnet_regiis.exe -pe "connectionStrings" -app "/SampleApplication" -prov "TripleDESProvider"
    
    Observação:

    Em SampleApplication, substitua o nome do aplicativo Web onde você deseja testar a criptografia.

  6. Abra o arquivo Web.config e veja que a string de conexão que foi criptografada.

  7. No aplicativo da Web, use a string de conexão criptografada.

    Por exemplo, adicione um controle SqlDataSource e defina sua propriedade ConnectionString para "NorthwindConnectionString", conforme mostrado no exemplo o seguir:

    <asp:SqlDataSource ID="SqlDataSource1" 
    
      ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
      SelectCommand="SELECT ProductName FROM Products">
    </asp:SqlDataSource>
    
  8. Acople um controle como um controle GridView para o controle SqlDataSource.

  9. Execute a página.

    Observe que os dados são exibidos da forma esperada.O ASP.NET descriptografou a string de conexão em tempo de execução antes de usá-lo para se conectar ao banco de dados Northwind.

Consulte também

Conceitos

Implementing a Protected Configuration Provider

Outros recursos

Criptografando informações de configuração usando configuração protegida