Implementieren eines geschützten Konfigurationsanbieters

Aktualisiert: November 2007

Mit der geschützten Konfiguration können Sie Abschnitte der Datei Web.config einer ASP.NET-Anwendung verschlüsseln, um die vertraulichen Informationen der Anwendung zu schützen. Auf diese Weise kann die Sicherheit der Anwendung verbessert werden, da ein Angreifer selbst dann noch Probleme beim Zugriff auf vertrauliche Informationen hat, wenn er sich bereits Zugriff zur Datei Web.config verschafft hat. In ASP.NET gibt es zwei geschützte Konfigurationsanbieter zum Verschlüsseln von Abschnitten der Datei Web.config: der RsaProtectedConfigurationProvider, der den RSACryptoServiceProvider zum Verschlüsseln von Konfigurationsabschnitten verwendet, und der DpapiProtectedConfigurationProvider, der die Windows Data Protection API (DPAPI) zum Verschlüsseln der Konfigurationsabschnitte verwendet.

In einigen Fällen kann es notwendig sein, dass Sie die Informationen mit einem Algorithmus verschlüsseln müssen, der nicht gemeinsam mit den Anbietern RSA und DPAPI verfügbar ist. In diesem Fall können Sie einen benutzerdefinierten geschützten Konfigurationsanbieter erstellen, der von ASP.NET verwendet wird.

Erforderliche Klassen für geschützte Konfigurationsanbieter

Erstellen Sie zum Implementieren eines geschützten Konfigurationsanbieters eine Klasse, die von der abstrakten ProtectedConfigurationProvider-Klasse aus dem System.Configuration-Namespace erbt. Die abstrakte ProtectedConfigurationProvider-Klasse erbt von der abstrakten ProviderBase-Klasse aus dem System.Configuration.Provider-Namespace. Folglich müssen Sie auch die erforderlichen Member der ProviderBase-Klasse implementieren. In den folgenden Tabellen werden diejenigen Eigenschaften und Methoden aufgeführt, die Sie von der abstrakten ProviderBase und der abstrakten ProtectedConfigurationProvider-Klassen implementieren müssen. Eine Implementierung aller Member finden Sie unter Gewusst wie: Erstellen und Ausführen des Beispiels für einen geschützten Konfigurationsanbieter.

Erforderliche ProviderBase-Member

Member

Beschreibung

Initialize-Methode

Legt Eigenschaftenwerte für die Anbieterinstanz fest, einschließlich implementierungsspezifischer Werte und Optionen, die in der Anwendungskonfiguration bereitgestellt werden.

Als Eingabe wird der Name des Anbieters und eine NameValueCollection mit Konfigurationseinstellungen verwendet.

Erforderliche ProtectedConfigurationProvider-Member

Member

Beschreibung

Encrypt-Methode

Führt die Verschlüsselung durch. Als Eingabe wird ein XmlNode-Objekt verwendet, das den zu verschlüsselnden Konfigurationsabschnitt enthält. Wenn z. B. der Konfigurationsabschnitt connectionStrings verschlüsselt werden soll, dann stellt das XmlNode-Objekt die XML-Daten ähnlich wie im folgenden Beispiel dar.

<connectionStrings>
  <add name="SampleConnectionString" 
    connectionString="Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;" />
</connectionStrings>

Die Encrypt-Methode verschlüsselt den OuterXml-Wert des XmlNode-Objekts und gibt ein XmlNode-Objekt mit einem EncryptedData-Element als Stammelement zurück:

<EncryptedData>
  <!-- encrypted contents -->
</EncryptedData>

Das Format des Inhalts des EncryptedData-Elements hängt von der Implementierung ab. Beim Entschlüsseln des Elements übergibt ASP.NET ein XmlNode-Objekt mit dem EncryptedData-Element als Stammelement an die Decrypt-Methode.

Decrypt-Methode

Führt die Entschlüsselung durch. Nimmt ein XmlNode-Objekt als Eingabe, das das EncryptedData-Element eines verschlüsselten Konfigurationsabschnitts enthält. Wenn es sich bei dem verschlüsselten Konfigurationsabschnitt z. B. um den Abschnitt connectionStrings handelt, dann stellt das XmlNode-Objekt die XML-Daten ähnlich wie im folgenden Beispiel dar.

<connectionStrings configProtectionProvider="CustomProvider">
  <EncryptedData>    <!-- encrypted contents -->  </EncryptedData>
</connectionStrings>

Die Decrypt-Methode entschlüsselt den Inhalt des XmlNode-Objekts und gibt ein XmlNode-Objekt zurück, das den entschlüsselten Inhalt des EncryptedDataXmlNode-Objekts darstellt. Wenn z. B. der connectionStrings-Abschnitt verschlüsselt wurde, gibt die Decrypt-Methode ein XmlNode-Objekt mit XML-Daten ähnlich wie im folgenden Beispiel zurück.

<connectionStrings>
  <add name="SampleConnectionString" 
    connectionString="Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;" />
</connectionStrings>

Beispiel für einen Anbieter

Ein Beispiel für einen benutzerdefinierten geschützten Konfigurationsanbieter, der zum Verschlüsseln und Entschlüsseln von Abschnitten der Datei Web.config die TripleDESCryptoServiceProvider-Klasse verwendet, finden Sie unter Gewusst wie: Erstellen und Ausführen des Beispiels für einen geschützten Konfigurationsanbieter.

Siehe auch

Aufgaben

Gewusst wie: Erstellen und Ausführen des Beispiels für einen geschützten Konfigurationsanbieter

Weitere Ressourcen

Verschlüsseln von Konfigurationsinformationen mithilfe der geschützten Konfiguration