MachineKeySection Class
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Defines the configuration settings that control the key generation and algorithms that are used in encryption, decryption, and message authentication code (MAC) operations in Windows Forms authentication, view-state validation, and session-state application isolation. This class cannot be inherited.
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
- Inheritance
Examples
The example in this section demonstrates how to specify values declaratively for several attributes of the machineKey section, which can also be accessed as members of the MachineKeySection class.
The following example from a configuration file shows how to specify values declaratively for the machineKey section.
<system.web>
<machineKey validationKey="AutoGenerate,IsolateApps"
decryptionKey="AutoGenerate,IsolateApps"
validation="SHA1"/>
</system.web>
This example uses SHA1. Due to collision problems with SHA1, Microsoft recommends SHA256.
The following example demonstrates how to use the MachineKeySection class in code.
#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
Remarks
The MachineKeySection class provides a way to programmatically access and modify the content of the MachineKey
section in the configuration file. The MachineKey
section can be configured at the machine (Machine.config) or application (Web.config) level and controls the keys and algorithms that are used for Windows Forms authentication, view-state validation, and session-state application isolation. For any of these features to work across a network of Web servers (a Web farm), the DecryptionKey
and ValidationKey
attributes of the MachineKey
section must be configured explicitly and identically with valid key values. The AutoGenerate
value does not work for Web farms, because it relies on a cryptographically random secret, which is persisted using machine-local protection and will not be the same across more than one computer.
Notes to Inheritors
If you to specify keys in this configuration section, as is required in Web-farm scenarios, it is recommended that you encrypt this section by using protected configuration.
Constructors
MachineKeySection() |
Initializes a new instance of the MachineKeySection class by using default settings. |
Properties
ApplicationName |
Gets or sets the name of the application. |
CompatibilityMode |
Gets or sets a value that specifies whether upgraded encryption methods for view state that were introduced after the .NET Framework version 2.0 Service Pack 1 release are used. |
CurrentConfiguration |
Gets a reference to the top-level Configuration instance that represents the configuration hierarchy that the current ConfigurationElement instance belongs to. (Inherited from ConfigurationElement) |
DataProtectorType |
Gets or sets the name of the data protector type. The default is Empty. |
Decryption |
Specifies the encryption algorithm that is used for encrypting and decrypting forms authentication data. |
DecryptionKey |
Gets or sets the key that is used to encrypt and decrypt data, or the process by which the key is generated. |
ElementInformation |
Gets an ElementInformation object that contains the non-customizable information and functionality of the ConfigurationElement object. (Inherited from ConfigurationElement) |
ElementProperty |
Gets the ConfigurationElementProperty object that represents the ConfigurationElement object itself. (Inherited from ConfigurationElement) |
EvaluationContext |
Gets the ContextInformation object for the ConfigurationElement object. (Inherited from ConfigurationElement) |
HasContext |
Gets a value that indicates whether the CurrentConfiguration property is |
Item[ConfigurationProperty] |
Gets or sets a property or attribute of this configuration element. (Inherited from ConfigurationElement) |
Item[String] |
Gets or sets a property, attribute, or child element of this configuration element. (Inherited from ConfigurationElement) |
LockAllAttributesExcept |
Gets the collection of locked attributes. (Inherited from ConfigurationElement) |
LockAllElementsExcept |
Gets the collection of locked elements. (Inherited from ConfigurationElement) |
LockAttributes |
Gets the collection of locked attributes. (Inherited from ConfigurationElement) |
LockElements |
Gets the collection of locked elements. (Inherited from ConfigurationElement) |
LockItem |
Gets or sets a value indicating whether the element is locked. (Inherited from ConfigurationElement) |
Properties |
Gets the collection of properties. (Inherited from ConfigurationElement) |
SectionInformation |
Gets a SectionInformation object that contains the non-customizable information and functionality of the ConfigurationSection object. (Inherited from ConfigurationSection) |
Validation |
Specifies the hashing algorithm that is used for validating forms authentication and view state data. |
ValidationAlgorithm |
Gets or sets the name of the algorithm that is used to validate forms authentication and view state data. |
ValidationKey |
Gets or sets the key that is used to validate forms authentication and view state data, or the process by which the key is generated. |
Methods
DeserializeElement(XmlReader, Boolean) |
Reads XML from the configuration file. (Inherited from ConfigurationElement) |
DeserializeSection(XmlReader) |
Reads XML from the configuration file. (Inherited from ConfigurationSection) |
Equals(Object) |
Compares the current ConfigurationElement instance to the specified object. (Inherited from ConfigurationElement) |
GetHashCode() |
Gets a unique value representing the current ConfigurationElement instance. (Inherited from ConfigurationElement) |
GetRuntimeObject() |
Returns a custom object when overridden in a derived class. (Inherited from ConfigurationSection) |
GetTransformedAssemblyString(String) |
Returns the transformed version of the specified assembly name. (Inherited from ConfigurationElement) |
GetTransformedTypeString(String) |
Returns the transformed version of the specified type name. (Inherited from ConfigurationElement) |
GetType() |
Gets the Type of the current instance. (Inherited from Object) |
Init() |
Sets the ConfigurationElement object to its initial state. (Inherited from ConfigurationElement) |
InitializeDefault() |
Used to initialize a default set of values for the ConfigurationElement object. (Inherited from ConfigurationElement) |
IsModified() |
Indicates whether this configuration element has been modified since it was last saved or loaded when implemented in a derived class. (Inherited from ConfigurationSection) |
IsReadOnly() |
Gets a value indicating whether the ConfigurationElement object is read-only. (Inherited from ConfigurationElement) |
ListErrors(IList) |
Adds the invalid-property errors in this ConfigurationElement object, and in all subelements, to the passed list. (Inherited from ConfigurationElement) |
MemberwiseClone() |
Creates a shallow copy of the current Object. (Inherited from Object) |
OnDeserializeUnrecognizedAttribute(String, String) |
Gets a value indicating whether an unknown attribute is encountered during deserialization. (Inherited from ConfigurationElement) |
OnDeserializeUnrecognizedElement(String, XmlReader) |
Gets a value indicating whether an unknown element is encountered during deserialization. (Inherited from ConfigurationElement) |
OnRequiredPropertyNotFound(String) |
Throws an exception when a required property is not found. (Inherited from ConfigurationElement) |
PostDeserialize() |
Called after deserialization. (Inherited from ConfigurationElement) |
PreSerialize(XmlWriter) |
Called before serialization. (Inherited from ConfigurationElement) |
Reset(ConfigurationElement) |
Resets the internal state of the ConfigurationElement object, including the locks and the properties collections. (Inherited from ConfigurationElement) |
ResetModified() |
Resets the value of the IsModified() method to |
SerializeElement(XmlWriter, Boolean) |
Writes the contents of this configuration element to the configuration file when implemented in a derived class. (Inherited from ConfigurationElement) |
SerializeSection(ConfigurationElement, String, ConfigurationSaveMode) |
Creates an XML string containing an unmerged view of the ConfigurationSection object as a single section to write to a file. (Inherited from ConfigurationSection) |
SerializeToXmlElement(XmlWriter, String) |
Writes the outer tags of this configuration element to the configuration file when implemented in a derived class. (Inherited from ConfigurationElement) |
SetPropertyValue(ConfigurationProperty, Object, Boolean) |
Sets a property to the specified value. (Inherited from ConfigurationElement) |
SetReadOnly() |
Sets the IsReadOnly() property for the ConfigurationElement object and all subelements. (Inherited from ConfigurationElement) |
ShouldSerializeElementInTargetVersion(ConfigurationElement, String, FrameworkName) |
Indicates whether the specified element should be serialized when the configuration object hierarchy is serialized for the specified target version of the .NET Framework. (Inherited from ConfigurationSection) |
ShouldSerializePropertyInTargetVersion(ConfigurationProperty, String, FrameworkName, ConfigurationElement) |
Indicates whether the specified property should be serialized when the configuration object hierarchy is serialized for the specified target version of the .NET Framework. (Inherited from ConfigurationSection) |
ShouldSerializeSectionInTargetVersion(FrameworkName) |
Indicates whether the current ConfigurationSection instance should be serialized when the configuration object hierarchy is serialized for the specified target version of the .NET Framework. (Inherited from ConfigurationSection) |
ToString() |
Returns a string that represents the current object. (Inherited from Object) |
Unmerge(ConfigurationElement, ConfigurationElement, ConfigurationSaveMode) |
Modifies the ConfigurationElement object to remove all values that should not be saved. (Inherited from ConfigurationElement) |