Sicherheit bei verteilten AnwendungenDistributed Application Security

Windows Communication Foundation (WCF)-Sicherheit wird in drei funktionelle Hauptbereiche unterteilt: übertragungssicherheit, Zugriffssteuerung und Überwachung.Windows Communication Foundation (WCF) security is broken into three major functional areas: transfer security, access control, and auditing. Durch die Übertragungssicherheit werden Integrität, Vertraulichkeit und Authentifizierung bereitgestellt.Transfer security provides integrity, confidentiality, and authentication. Die Übertragungssicherheit wird durch eine der folgenden Funktionen bereitgestellt: Transportsicherheit, Nachrichtensicherheit oder TransportWithMessageCredential.Transfer security is provided by one of the following: transport security, message security, or TransportWithMessageCredential.

Einen Überblick über die Sicherheit für WCF-Nachrichten finden Sie unter Sicherheitsübersicht.For an overview of WCF message security, see Security Overview. Weitere Informationen zu den anderen beiden Teilen der WCF-Sicherheit, finden Sie unter Autorisierung und Überwachung.For more information about the other two pieces of WCF security, see Authorization and Auditing.

Szenarien für die ÜbertragungssicherheitTransfer Security Scenarios

Allgemeine Szenarien, Nutzen von WCF-übertragungssicherheit, umfassen Folgendes:Common scenarios that employ WCF transfer security include the following:

  • Sichere Übertragung mittels Windows:Secure transfer using Windows. WCF-Client und Dienst werden in einer Windows-Domäne (oder einer Windows-Gesamtstruktur) bereitgestellt.A WCF client and service are deployed in a Windows domain (or a Windows forest). Da die Nachrichten persönliche Daten enthalten, sind unter anderem eine gegenseitige Authentifizierung von Client und Dienst sowie die Integrität und Vertraulichkeit der Nachrichten erforderlich.The messages contain personal data, so requirements include mutual authentication of the client and service, message integrity, and message confidentiality. Darüber hinaus muss belegt werden, dass eine bestimmte Transaktion stattgefunden hat. So sollten beim Empfänger der Nachricht zum Beispiel Signaturinformationen aufgezeichnet werden.In addition, proof is required that a particular transaction occurred, for example, the receiver of the message should record the signature information.

  • Sichere Übertragung mittels UserName und HTTPS:Secure transfer using UserName and HTTPS. WCF-Client und Dienst müssen entwickelt werden, um über das Internet zu arbeiten.A WCF client and service need to be developed to work across the Internet. Die Clientanmeldeinformationen werden anhand einer Datenbank mit Benutzername-/Kennwort-Paaren authentifiziert.The client credentials authenticate against a database of user name/password pairs. Der Dienst wird unter einer HTTPS-Adresse mithilfe eines vertrauenswürdigen SSL-Zertifikats (SSL = Secure Sockets Layer) bereitgestellt.The service is deployed at an HTTPS address using a trusted Secure Sockets Layer (SSL) certificate. Da die Nachrichten über das Internet gesendet werden, müssen sich Client und Dienst gegenseitig authentifizieren und die Integrität und Vertraulichkeit der Nachrichten muss während der Übertragung gewahrt werden.Because the messages travel over the Internet, the client and service need to be mutually authenticated, and the messages' confidentiality and integrity must be preserved during transfer.

  • Sichere Übertragung mittels Zertifikaten:Secure transfer using certificates. WCF-Client und Dienst für die Zusammenarbeit über das öffentliche Internet entwickelt werden müssen.A WCF client and service need to be developed to work over the public internet. Client und Dienst verfügen beide über Zertifikate, mit denen die Nachrichten geschützt werden können.The client and service both have certificates that can be used to secure the messages. Client und Dienst verwenden das Internet, um miteinander zu kommunizieren und Transaktionen von hohem Wert auszuführen, für die Nachrichtenintegrität, Vertraulichkeit und eine gegenseitige Authentifizierung erforderlich sind.The client and service use the Internet to communicate with each other and to perform high-value transactions that require message integrity, confidentiality, and mutual authentication.

Integrität, Vertraulichkeit und AuthentifizierungIntegrity, Confidentiality, and Authentication

Die drei Funktionen Integrität, Vertraulichkeit und Authentifizierung ergeben zusammen die Übertragungssicherheit.Three functions—integrity, confidentiality and authentication—are together called transfer security. Durch die Übertragungssicherheit werden die Funktionen bereitgestellt, die Ihnen dabei helfen, die Bedrohungen für eine verteilte Anwendung zu mindern.Transfer security provides the functions that help to mitigate the threats to a distributed application. In der folgenden Tabelle werden kurz die drei Funktionen beschrieben, aus denen sich die Übertragungssicherheit zusammensetzt.The following table briefly describes the three functions that make up transfer security.

FunktionFunction BeschreibungDescription
IntegritätIntegrity Integrität ist die Zusicherung, dass Daten vollständig und richtig sind, vor allem, sobald sie von einem Punkt in eine andere durchlaufen, und möglicherweise von vielen Parteien gelesen wurden.Integrity is the assurance that data is complete and accurate, especially after it has traversed from one point to another, and possibly been read by many actors. Die Integrität muss gewahrt werden, um eine Manipulation der Daten zu vermeiden. Dieses Ziel wird in der Regel durch das digitale Signieren von Nachrichten erreicht.Integrity must be maintained to prevent tampering with the data, and is usually achieved by digital signing of a message.
VertraulichkeitConfidentiality Vertraulichkeit ist die Zusicherung, die eine Nachricht nicht vom beabsichtigten Empfänger gelesen wurde.Confidentiality is the assurance that a message has not been read by anyone other than the intended reader. So müssen zum Beispiel Kreditkartennummern, die über das Internet gesendet werden, vertraulich behandelt werden.For example, a credit card number must be kept confidential as it is sent over the Internet. Vertraulichkeit wird häufig durch Verschlüsselung der Daten mit einem Schema aus öffentlichem und privatem Schlüssel bereitgestellt.Confidentiality is often provided by the encryption of data using a public key/private key scheme.
AuthentifizierungAuthentication Authentifizierung ist die Überprüfung einer beanspruchten Identität.Authentication is the verification of a claimed identity. So muss beispielsweise bei Bankkonten gewährleistet sein, dass nur die tatsächlichen Kontoinhaber Geld abheben können.For example, when using a bank account, it is imperative that only the actual owner of the account be allowed to withdraw funds. Es gibt viele Möglichkeiten, eine Authentifizierung bereitzustellen.Authentication can be provided by a variety of means. Eine häufig verwendete Methode ist das Benutzer-/Kennwortsystem.One common method is the user/password system. Eine andere ist die Verwendung eines von einem Drittanbieter bereitgestellten X.509-Zertifikats.A second is the use of an X.509 certificate that is provided by a third party.

SicherheitsmodiSecurity Modes

WCF bietet mehrere Modi für die übertragungssicherheit, die in der folgenden Tabelle beschrieben werden.WCF has several modes of transfer security, which are described in the following table.

ModusMode BeschreibungDescription
KeinerNone Auf Transport- bzw. Nachrichtenebene wird keine Sicherheit bereitgestellt.No security is provided at the transport layer or at the message layer. Keiner der vordefinierten Bindungen verwenden Sie diesen Modus standardmäßig mit Ausnahme der <BasicHttpBinding > Element oder, bei der Verwendung von Code, der BasicHttpBinding Klasse.None of the predefined bindings use this mode by default except the <basicHttpBinding> element or, when using code, the BasicHttpBinding class.
TransportTransport Es wird ein sicherer Transport wie HTTPS zur Gewährleistung von Integrität, Vertraulichkeit und gegenseitiger Authentifizierung verwendet.Uses a secure transport such as HTTPS for integrity, confidentiality, and mutual authentication.
MeldungMessage Es wird die SOAP-Nachrichtensicherheit zur Gewährleistung von Integrität, Vertraulichkeit und gegenseitiger Authentifizierung verwendet.Uses SOAP-message security for integrity, confidentiality, and mutual authentication. SOAP-Nachrichten werden gemäß den Standards für die WS-Sicherheit geschützt.SOAP messages are secured according to the WS-Security standards.
GemischtMixed Mode Es wird die Transportsicherheit zur Gewährleistung von Integrität und Vertraulichkeit sowie für die Serverauthentifizierung verwendet.Uses transport security for integrity, confidentiality, and server authentication. Für die Clientauthentifizierung wird die Nachrichtensicherheit (WS-Sicherheit und andere Standards) eingesetzt.Uses message security (WS-Security and other standards) for client authentication.

(Der Enumerationswert für diesen Modus ist TransportWithMessageCredential.)(This enumeration for this mode is TransportWithMessageCredential.)
BeidesBoth Schutz und Authentifizierung finden auf beiden Ebenen statt.Performs protection and authentication at both levels. Dieser Modus steht nur in der <NetMsmqBinding > Element.This mode is available only in the <netMsmqBinding> element.

Identitätsnachweis (Anmeldeinformationen) und ÜbertragungssicherheitCredentials and Transfer Security

Ein Anmeldeinformationen Daten, die angezeigt werden, um entweder eine beanspruchte Identität bzw. beanspruchte Befähigungen belegt wird.A credential is data that is presented to establish either a claimed identity or capabilities. Das Vorlegen eines Identitätsnachweises umfasst das Angeben der Daten und den Nachweis, dass sich die Daten rechtmäßig im Besitz des Inhabers befinden.Presenting a credential involves presenting both the data and proof of possession of the data. WCF unterstützt verschiedene Typen von Anmeldeinformationen auf der Transport- und nachrichtensicherheitsebene.WCF supports a variety of credential types at both the transport and message security levels. Sie können einen Typ von Anmeldeinformationen für eine WCF-Bindung angeben.You can specify a type of credential for a WCF binding.

In vielen Ländern bzw. Regionen ist der Führerschein ein Beispiel für einen Identitätsnachweis.In many countries or regions, a driver’s license is an example of a credential. Ein Führerschein enthält Daten, die die Identität und Befähigungen einer Person belegen.A license contains data representing one's identity and capabilities. Der rechtmäßige Besitz wird mithilfe eines Bilds des Inhabers nachgewiesen.It contains proof of possession in the form of the possessor's picture. Der Führerschein wird von einer vertrauenswürdigen Stelle ausgegeben, in der Regel von einer dafür zuständigen Regierungsbehörde.The license is issued by a trusted authority, usually a governmental licensing department. Der Führerschein wird eingeschweißt und enthält ggf. ein Hologramm, wodurch sichergestellt wird, dass er nicht manipuliert oder gefälscht wurde.The license is sealed, and can contain a hologram, showing that it has not been tampered with or counterfeited.

Betrachten Sie beispielsweise zwei Typen von Anmeldeinformationen, die in WCF unterstützt: Benutzername und (x. 509) zertifikatsanmeldeinformationen.As an example, consider two types of credentials supported in WCF: user name and (X.509) certificate credentials.

Beim Identitätsnachweis mittels Benutzername stellt der Benutzername die beanspruchte Identität dar, und das Kennwort ist der Nachweis des rechtmäßigen Besitzes.For the user name credential, the user name represents the claimed identity and the password presents the proof of possession. Die vertrauenswürdige Stelle ist in diesem Fall das System, das den Benutzernamen und das Kennwort überprüft.The trusted authority in this case is the system that validates the user name and password.

Beim Identitätsnachweis mittels Zertifikat können die beanspruchte Identität bzw. die beanspruchten Befähigungen durch den Antragstellernamen, den alternativen Antragstellernamen oder spezielle Felder im Zertifikat belegt werden.In the certificate credential, the subject name, subject alternative name, or specific fields within the certificate can be used to represent the claimed identity and/or capabilities. Der Nachweis des rechtmäßigen Besitzes der Daten erfolgt durch eine Signatur, die mit dem zugehörigen privaten Schlüssel erzeugt wird.Proof of possession of the data in the credential is established by using the associated private key to generate a signature.

Weitere Informationen zur Programmierung übertragungssicherheit und bestimmten Anmeldeinformationen finden Sie unter Bindungen und Sicherheit und Sicherheitsverhalten.For more information about programming transfer security and specifying credentials, see Bindings and Security and Security Behaviors.

Arten von Clientanmeldeinformationen bei der TransportsicherheitTransport Client Credential Types

In der folgenden Tabelle finden Sie die möglichen Werte, die Sie beim Erstellen einer Anwendung verwenden können, die die Übertragungssicherheit nutzt.The following table shows the possible values used when creating an application that uses transfer security. Sie können diese Werte entweder im Code oder in Bindungseinstellungen festlegen.You can use these values in either code or binding settings.

EinstellungSetting BeschreibungDescription
KeineNone Gibt an, dass der Client keine Anmeldeinformationen präsentieren muss.Specifies that the client does not need to present any credential. Dies führt zur Verwendung eines anonymen Clients.This translates to an anonymous client.
StandardBasic Gibt die Standardauthentifizierung an.Specifies basic authentication. Weitere Informationen finden Sie unter RFC 2617, "HTTP Authentication: Basic and Digest Authentication."For additional information, see RFC2617, "HTTP Authentication: Basic and Digest Authentication."
DigestDigest Gibt die Hashwertauthentifizierung an.Specifies digest authentication. Weitere Informationen finden Sie unter RFC 2617, "HTTP Authentication: Basic and Digest Authentication."For additional information, see RFC2617, "HTTP Authentication: Basic and Digest Authentication."
NtlmNtlm Gibt die Windows-Authentifizierung mit SSPI-Aushandlung auf einer Windows-Domäne an.Specifies Windows authentication using SSPI negotiation on a Windows domain.

Die SSPI-Aushandlung führt dazu, dass entweder das Kerberos-Protokoll oder NT LanMan (NTLM) verwendet wird.SSPI negotiation results in using either the Kerberos protocol or NT LanMan (NTLM).
WindowsWindows Gibt die Windows-Authentifizierung mit SSPI auf einer Windows-Domäne an.Specifies Windows authentication using SSPI on a Windows domain. SSPI wählt entweder das Kerberos-Protokoll oder NTLM als Authentifizierungsdienst aus.SSPI picks from either the Kerberos protocol or NTLM as authentication service.

Zuerst wird das Kerberos-Protokoll angewendet, wenn dies scheitert, wird NTLM verwendet.SSPI tries Kerberos protocol first; if that fails, it then uses NTLM.
ZertifikatCertificate Führt die Clientauthentifizierung mit einem Zertifikat (in der Regel X.509) durch.Performs client authentication using a certificate, typically X.509.

Typen von Nachrichtenclient-AnmeldeinformationenMessage Client Credential Types

In der folgenden Tabelle finden Sie die möglichen Werte, die Sie beim Erstellen einer Anwendung verwenden können, die die Nachrichtensicherheit nutzt.The following table shows the possible values used when creating an application that uses message security. Sie können diese Werte entweder im Code oder in Bindungseinstellungen festlegen.You can use these values in either code or binding settings.

EinstellungSetting BeschreibungDescription
KeinerNone Ermöglicht dem Dienst die Interaktion mit anonymen Clients.Allows the service to interact with anonymous clients.
WindowsWindows Ermöglicht den SOAP-Nachrichtenaustausch im Rahmen des authentifizierten Kontexts von Windows-Anmeldeinformationen.Allows SOAP message exchanges to occur under the authenticated context of a Windows credential. Es wird mittels SSPI-Aushandlung entweder das Kerberos-Protokoll oder NTLM als Authentifizierungsdienst ausgewählt.Uses SSPI negotiation mechanism to pick from either the Kerberos protocol or NTLM as an authentication service.
BenutzernameUsername Ermöglicht es dem Dienst zu fordern, dass sich der Client per Benutzername authentifiziert.Allows the service to require that the client be authenticated with a user name credential. Beachten Sie, dass alle kryptografischen Vorgänge mit dem Benutzernamen, z. B. Erzeugen einer Signatur oder Verschlüsseln von Daten von WCF nicht zulässig ist.Note that WCF does not allow any cryptographic operations with the user name, such as generating a signature or encrypting data. Daher erzwingt WCF an, dass der Transport geschützt wird, wenn Benutzernamen-Anmeldeinformationen verwenden.As such, WCF enforces that the transport is secured when using user name credentials.
ZertifikatCertificate Ermöglicht dem Dienst, die Forderung zu stellen, dass der Client über ein Zertifikat authentifiziert werden muss.Allows the service to require that the client be authenticated using a certificate.
CardSpaceCardSpace Ermöglicht dem Dienst die Forderung, dass der Client über eine CardSpaceCardSpace authentifiziert werden muss.Allows the service to require that the client be authenticated using an CardSpaceCardSpace.

Programmieren von AnmeldeinformationenProgramming Credentials

Für jeden der Typen von Clientanmeldeinformationen kann die WCF-Programmiermodell Geben Sie die Werte für die Anmeldeinformationen und Validierungssteuerelemente mithilfe von Dienstverhalten und Kanalverhalten-Anmeldeinformationen.For each of the client credential types, the WCF programming model allows you to specify the credential values and credential validators by using service behaviors and channel behaviors.

WCF-Sicherheit verfügt über zwei Arten von Anmeldeinformationen: Verhalten für Dienstanmeldeinformationen und kanalanmeldeinformationen service.WCF security has two types of credentials: service credential behaviors and channel credential behaviors. Anmeldeinformationen-Verhalten in WCF werden die eigentlichen Daten, d. h., Anmeldeinformationen verwendet, um die durch Bindungen ausgedrückten sicherheitsvoraussetzungen erfüllt angegeben.Credential behaviors in WCF specify the actual data, namely, credentials used to meet the security requirements expressed through bindings. In WCF ist eine Clientklasse die Laufzeitkomponente, die zwischen Vorgangsaufruf und Nachrichten konvertiert.In WCF, a client class is the run-time component that converts between operation invocation and messages. Alle Clients erben von der ClientBase<TChannel>-Klasse.All clients inherit from the ClientBase<TChannel> class. Über die ClientCredentials-Eigenschaft der Basisklasse können Sie verschiedene Werte für die Clientanmeldeinformationen angeben.The ClientCredentials property on the base class allows you to specify various values of client credentials.

In WCF sind Dienstverhalten Attribute, die auf die Klasse, die Implementierung eines Dienstvertrags (Schnittstelle), um den Dienst programmgesteuert angewendet.In WCF, service behaviors are attributes applied to the class implementing a service contract (interface) to programmatically control the service. Über die ServiceCredentials-Klasse können Sie Zertifikate für Dienstanmeldeinformationen und Einstellungen für die Clientvalidierung für verschiedene Arten von Clientanmeldeinformationen festlegen.The ServiceCredentials class allows you to specify certificates for service credential and client validation settings for various client credential types.

Aushandlungsmodell für die NachrichtensicherheitNegotiation Model for Message Security

Im Modus für die Nachrichtensicherheit können Sie die Übertragungssicherheit so ausüben, dass die Dienstanmeldeinformationen nach dem Out-of-Band-System auf dem Client konfiguriert werden.The message security mode allows you to perform transfer security so that the service credential is configured at the client out of band. Wenn Sie beispielsweise ein im Windows-Zertifikatspeicher gespeichertes Zertifikat verwenden, müssen Sie ein Tool wie das MMC-Snap-In (Microsoft Management Console) verwenden.For example, if you are using a certificate stored in the Windows certificate store, you must use a tool such as a Microsoft Management Console (MMC) snap-in.

Im Modus für die Nachrichtensicherheit können Sie die Übertragungssicherheit auch so ausüben, dass im Zuge einer anfänglichen Aushandlung ein Austausch der Dienstanmeldeinformationen mit dem Client erfolgt.The message security mode also allows you to perform transfer security so that the service credential is exchanged with the client as part of an initial negotiation. Legen Sie die NegotiateServiceCredential-Eigenschaft auf true fest, um die Aushandlung zu aktivieren.To enable negotiation, set the NegotiateServiceCredential property to true.

Siehe auchSee Also

Übersicht über die EndpunkterstellungEndpoint Creation Overview
Vom System bereitgestellte BindungenSystem-Provided Bindings
Übersicht über die SicherheitSecurity Overview
Sicherheitsmodell für Windows Server AppFabricSecurity Model for Windows Server App Fabric