MachineKeySection Classe

Definição

Define as definições de configuração que controlam a geração de chaves e os algoritmos usados nas operações de encriptação, desencriptação e código de autenticação de mensagens (MAC) na autenticação do Windows Forms, validação de estado de visualização e isolamento de aplicações em estado de sessão. Esta classe não pode ser herdada.

public ref class MachineKeySection sealed : System::Configuration::ConfigurationSection
public sealed class MachineKeySection : System.Configuration.ConfigurationSection
type MachineKeySection = class
    inherit ConfigurationSection
Public NotInheritable Class MachineKeySection
Inherits ConfigurationSection
Herança

Exemplos

O exemplo nesta secção demonstra como especificar valores declarativamente para vários atributos da secção machineKey , que também podem ser acedidos como membros da MachineKeySection classe.

O exemplo seguinte de um ficheiro de configuração mostra como especificar valores declarativamente para a secção machineKey .

<system.web>
  <machineKey validationKey="AutoGenerate,IsolateApps"
    decryptionKey="AutoGenerate,IsolateApps"
    validation="SHA1"/>
</system.web>

Este exemplo utiliza o SHA1. Devido a problemas de colisão com SHA1, a Microsoft recomenda SHA256.

O exemplo seguinte demonstra como usar a MachineKeySection classe em código.

#region Using directives

using System;
using System.Collections.Generic;
using System.Text;
using System.Configuration;
using System.Web;
using System.Web.Configuration;

#endregion

namespace Samples.Aspnet.SystemWebConfiguration
{
  class UsingMachineKeySection
  {
    static void Main(string[] args)
    {
      try
      {
        // Set the path of the config file.
        string configPath = "";

        // Get the Web application configuration object.
        Configuration config = WebConfigurationManager.OpenWebConfiguration(configPath);

        // Get the section related object.
        MachineKeySection configSection = 
          (MachineKeySection)config.GetSection("system.web/machineKey");

        // Display title and info.
        Console.WriteLine("ASP.NET Configuration Info");
        Console.WriteLine();

        // Display Config details.
        Console.WriteLine("File Path: {0}",
          config.FilePath);
        Console.WriteLine("Section Path: {0}",
          configSection.SectionInformation.Name);

        // Display ValidationKey property.
        Console.WriteLine("ValidationKey: {0}",
          configSection.ValidationKey);

        // Set ValidationKey property.
        configSection.ValidationKey = "AutoGenerate,IsolateApps";

        // Display DecryptionKey property.
        Console.WriteLine("DecryptionKey: {0}",
          configSection.DecryptionKey);

        // Set DecryptionKey property.
        configSection.DecryptionKey = "AutoGenerate,IsolateApps";

        // Display Validation property.
        Console.WriteLine("Validation: {0}",
          configSection.Validation);

        // Set Validation property.
        configSection.Validation = MachineKeyValidation.HMACSHA256;

        // Update if not locked.
        if (!configSection.SectionInformation.IsLocked)
        {
          config.Save();
          Console.WriteLine("** Configuration updated.");
        }
        else
        {
          Console.WriteLine("** Could not update, section is locked.");
        }
      }

      catch (Exception e)
      {
        // Unknown error.
        Console.WriteLine(e.ToString());
      }

      // Display and wait
      Console.ReadLine();
    }
  }
}
Imports System.Collections.Generic
Imports System.Text
Imports System.Configuration
Imports System.Web
Imports System.Web.Configuration

Namespace Samples.Aspnet.SystemWebConfiguration
  Class UsingMachineKeySection
    Public Shared Sub Main()
      Try
        ' Set the path of the config file.
        Dim configPath As String = ""

        ' Get the Web application configuration object.
        Dim config As System.Configuration.Configuration = _
         System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(configPath)

        ' Get the section related object.
        Dim configSection As System.Web.Configuration.MachineKeySection = _
         CType(config.GetSection("system.web/machineKey"), _
         System.Web.Configuration.MachineKeySection)

        ' Display title and info.
        Console.WriteLine("ASP.NET Configuration Info")
        Console.WriteLine()

        ' Display Config details.
        Console.WriteLine("File Path: {0}", config.FilePath)
        Console.WriteLine("Section Path: {0}", configSection.SectionInformation.Name)

        ' Display ValidationKey property.
        Console.WriteLine("ValidationKey: {0}", _
         configSection.ValidationKey)

        ' Set ValidationKey property.
        configSection.ValidationKey = "AutoGenerate,IsolateApps"

        ' Display DecryptionKey property.
        Console.WriteLine("DecryptionKey: {0}", configSection.DecryptionKey)

        ' Set DecryptionKey property.
        configSection.DecryptionKey = "AutoGenerate,IsolateApps"

        ' Display Validation value.
        Console.WriteLine("Validation: {0}", configSection.Validation)

        ' Set Validation value.
        configSection.Validation = MachineKeyValidation.HMACSHA256

        ' Update if not locked.
        If Not configSection.SectionInformation.IsLocked Then
          config.Save()
          Console.WriteLine("** Configuration updated.")
        Else
          Console.WriteLine("** Could not update, section is locked.")
        End If

      Catch e As Exception
        ' Unknown error.
        Console.WriteLine(e.ToString())
      End Try

      ' Display and wait
      Console.ReadLine()
    End Sub
  End Class
End Namespace

Observações

A MachineKeySection classe fornece uma forma de aceder programaticamente e modificar o conteúdo da MachineKey secção no ficheiro de configuração. A secção MachineKey pode ser configurada ao nível da máquina (Machine.config) ou da aplicação (Web.config) e controla as chaves e algoritmos usados para autenticação Windows Forms, validação do estado de visualização e isolamento da aplicação no estado da sessão. Para que qualquer uma destas funcionalidades funcione numa rede de servidores Web (uma fazenda Web), os DecryptionKey atributos e ValidationKey da MachineKey secção devem ser configurados de forma explícita e idêntica com valores-chave válidos. O AutoGenerate valor não funciona para webfarms, porque depende de um segredo criptograficamente aleatório, que é mantido através da proteção local da máquina e não será o mesmo em mais do que um computador.

Notas para Herdeiros

Se quiser especificar chaves nesta secção de configuração, como é exigido em cenários de Web-farm, recomenda-se que encripte esta secção usando configuração protegida.

Construtores

Name Description
MachineKeySection()

Inicializa uma nova instância da MachineKeySection classe usando as definições padrão.

Propriedades

Name Description
ApplicationName

Obtém ou define o nome da aplicação.

CompatibilityMode

Recebe ou define um valor que especifica se são utilizados métodos de encriptação atualizados para o estado da visualização, introduzidos após o lançamento do Service Pack 1 do .NET Framework versão 2.0.

CurrentConfiguration

Obtém uma referência à instância de topo Configuration que representa a hierarquia de configuração a que pertence a instância atual ConfigurationElement .

(Herdado de ConfigurationElement)
DataProtectorType

Obtém ou define o nome do tipo de protetor de dados. A predefinição é Empty.

Decryption

Especifica o algoritmo de encriptação utilizado para encriptar e desencriptar dados de autenticação de formulários.

DecryptionKey

Obtém ou define a chave usada para encriptar e desencriptar dados, ou o processo pelo qual a chave é gerada.

ElementInformation

Obtém um ElementInformation objeto que contém a informação e funcionalidade não personalizáveis do ConfigurationElement objeto.

(Herdado de ConfigurationElement)
ElementProperty

Obtém o ConfigurationElementProperty objeto que representa o ConfigurationElement próprio objeto.

(Herdado de ConfigurationElement)
EvaluationContext

Obtém o ContextInformation objeto para o ConfigurationElement objeto.

(Herdado de ConfigurationElement)
HasContext

Obtém um valor que indica se a CurrentConfiguration propriedade é null.

(Herdado de ConfigurationElement)
Item[ConfigurationProperty]

Obtém ou define uma propriedade ou atributo deste elemento de configuração.

(Herdado de ConfigurationElement)
Item[String]

Obtém ou define uma propriedade, atributo ou elemento filho deste elemento de configuração.

(Herdado de ConfigurationElement)
LockAllAttributesExcept

Obtém a coleção de atributos bloqueados.

(Herdado de ConfigurationElement)
LockAllElementsExcept

Obtém a coleção de elementos bloqueados.

(Herdado de ConfigurationElement)
LockAttributes

Obtém a coleção de atributos bloqueados.

(Herdado de ConfigurationElement)
LockElements

Obtém a coleção de elementos bloqueados.

(Herdado de ConfigurationElement)
LockItem

Recebe ou define um valor que indica se o elemento está bloqueado.

(Herdado de ConfigurationElement)
Properties

Recebe a coleção de propriedades.

(Herdado de ConfigurationElement)
SectionInformation

Obtém um SectionInformation objeto que contém a informação e funcionalidade não personalizáveis do ConfigurationSection objeto.

(Herdado de ConfigurationSection)
Validation

Especifica o algoritmo de hash utilizado para validar formulários, autenticação e dados de estado de visualização.

ValidationAlgorithm

Obtém ou define o nome do algoritmo utilizado para validar a autenticação dos formulários e visualizar os dados de estado.

ValidationKey

Obtém ou define a chave usada para validar a autenticação dos formulários e visualizar os dados de estado, ou o processo pelo qual a chave é gerada.

Métodos

Name Description
DeserializeElement(XmlReader, Boolean)

Lê XML a partir do ficheiro de configuração.

(Herdado de ConfigurationElement)
DeserializeSection(XmlReader)

Lê XML a partir do ficheiro de configuração.

(Herdado de ConfigurationSection)
Equals(Object)

Compara a instância atual ConfigurationElement com o objeto especificado.

(Herdado de ConfigurationElement)
GetHashCode()

Obtém um valor único que representa a instância atual ConfigurationElement .

(Herdado de ConfigurationElement)
GetRuntimeObject()

Devolve um objeto personalizado quando sobrescrito numa classe derivada.

(Herdado de ConfigurationSection)
GetTransformedAssemblyString(String)

Devolve a versão transformada do nome da assembleia especificado.

(Herdado de ConfigurationElement)
GetTransformedTypeString(String)

Devolve a versão transformada do nome do tipo especificado.

(Herdado de ConfigurationElement)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
Init()

Define o ConfigurationElement objeto para o seu estado inicial.

(Herdado de ConfigurationElement)
InitializeDefault()

Usado para inicializar um conjunto padrão de valores para o ConfigurationElement objeto.

(Herdado de ConfigurationElement)
IsModified()

Indica se este elemento de configuração foi modificado desde a última vez que foi guardado ou carregado quando implementado numa classe derivada.

(Herdado de ConfigurationSection)
IsReadOnly()

Recebe um valor que indica se o ConfigurationElement objeto é apenas de leitura.

(Herdado de ConfigurationElement)
ListErrors(IList)

Adiciona os erros de propriedades inválidas neste ConfigurationElement objeto, e em todos os subelementos, à lista passada.

(Herdado de ConfigurationElement)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
OnDeserializeUnrecognizedAttribute(String, String)

Recebe um valor que indica se um atributo desconhecido é encontrado durante a desserialização.

(Herdado de ConfigurationElement)
OnDeserializeUnrecognizedElement(String, XmlReader)

Obtém um valor que indica se um elemento desconhecido é encontrado durante a desserialização.

(Herdado de ConfigurationElement)
OnRequiredPropertyNotFound(String)

Lança uma exceção quando uma propriedade exigida não é encontrada.

(Herdado de ConfigurationElement)
PostDeserialize()

Chamada após desserialização.

(Herdado de ConfigurationElement)
PreSerialize(XmlWriter)

Chamado antes da serialização.

(Herdado de ConfigurationElement)
Reset(ConfigurationElement)

Reinicia o estado interno do ConfigurationElement objeto, incluindo os bloqueios e as coleções de propriedades.

(Herdado de ConfigurationElement)
ResetModified()

Redefine o valor do IsModified() método para false quando implementado numa classe derivada.

(Herdado de ConfigurationSection)
SerializeElement(XmlWriter, Boolean)

Escreve o conteúdo deste elemento de configuração no ficheiro de configuração quando implementado numa classe derivada.

(Herdado de ConfigurationElement)
SerializeSection(ConfigurationElement, String, ConfigurationSaveMode)

Cria uma string XML contendo uma vista não fundida do ConfigurationSection objeto como uma única secção para escrever num ficheiro.

(Herdado de ConfigurationSection)
SerializeToXmlElement(XmlWriter, String)

Escreve as etiquetas exteriores deste elemento de configuração no ficheiro de configuração quando implementado numa classe derivada.

(Herdado de ConfigurationElement)
SetPropertyValue(ConfigurationProperty, Object, Boolean)

Define uma propriedade para o valor especificado.

(Herdado de ConfigurationElement)
SetReadOnly()

Define a IsReadOnly() propriedade para o ConfigurationElement objeto e todos os subelementos.

(Herdado de ConfigurationElement)
ShouldSerializeElementInTargetVersion(ConfigurationElement, String, FrameworkName)

Indica se o elemento especificado deve ser serializado quando a hierarquia de objetos de configuração é serializada para a versão alvo especificada do .NET Framework.

(Herdado de ConfigurationSection)
ShouldSerializePropertyInTargetVersion(ConfigurationProperty, String, FrameworkName, ConfigurationElement)

Indica se a propriedade especificada deve ser serializada quando a hierarquia de objetos de configuração é serializada para a versão alvo especificada do .NET Framework.

(Herdado de ConfigurationSection)
ShouldSerializeSectionInTargetVersion(FrameworkName)

Indica se a instância atual ConfigurationSection deve ser serializada quando a hierarquia de objetos de configuração é serializada para a versão alvo especificada do .NET Framework.

(Herdado de ConfigurationSection)
ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)
Unmerge(ConfigurationElement, ConfigurationElement, ConfigurationSaveMode)

Modifica o ConfigurationElement objeto para remover todos os valores que não deveriam ser guardados.

(Herdado de ConfigurationElement)

Aplica-se a

Ver também