Sichern von DienstenSecuring Services

Die Sicherheit eines Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) -Diensts besteht aus zwei primären Anforderungen: Übertragungssicherheit und Autorisierung.Security of a Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) service consists of two primary requirements: transfer security and authorization. (Eine dritte Anforderung, die Überwachung von Sicherheitsereignissen, wird im beschrieben Überwachung.) In Kürze: Übertragungssicherheit umfasst Authentifizierung (Überprüfen der Identität sowohl des Diensts als auch des Clients), Vertraulichkeit (Nachrichtenverschlüsselung) und Integrität (digitales Signieren zur Manipulationserkennung).(A third requirement, auditing of security events, is described in Auditing.) In brief, transfer security includes authentication (verifying the identity of both the service and the client), confidentiality (message encryption), and integrity (digital signing to detect tampering). Autorisierung ist die Steuerung des Ressourcenzugriffs, beispielsweise wird nur Benutzern mit entsprechenden Berechtigungen das Lesen einer Datei ermöglicht.Authorization is the control of access to resources, for example, allowing only privileged users to read a file. Mithilfe der Funktionen von WCFWCFlassen sich die beiden primären Anforderungen problemlos implementieren.Using features of WCFWCF, the two primary requirements are easily implemented.

Mit Ausnahme von der BasicHttpBinding Klasse (oder die <BasicHttpBinding > Element in der Konfiguration), wird übertragungssicherheit standardmäßig für alle vordefinierten Bindungen aktiviert.With the exception of the BasicHttpBinding class (or the <basicHttpBinding> element in configuration), transfer security is enabled by default for all of the predefined bindings. Die Themen in diesem Abschnitt behandeln zwei grundlegende Szenarien: das Implementieren von Übertragungssicherheit und die Autorisierung in einem Intranetdienst, der von Internetinformationsdienste (IIS) gehostet wird, sowie das Implementieren von Übertragungssicherheit und Autorisierung in einem von IIS gehosteten Dienst.The topics in this section cover two basic scenarios: implementing transfer security and authorization on an intranet service hosted on Internet Information Services (IIS), and implementing transfer security and authorization on a service hosted on IIS.

Hinweis

Windows XP Home unterstützt keine Windows-Authentifizierung.Windows XP Home does not support Windows authentication. Deshalb sollten Sie keinen Dienst auf diesem System ausführen.Therefore, you should not run a service on that system.

Grundlagen zur SicherheitSecurity Basics

Sicherheit basiert auf Anmeldeinformationen.Security relies on credentials. Anmeldeinformationen beweisen, dass es sich bei einer Entität tatsächlich um die angegebene Entität handelt.A credential proves that an entity is who it claims to be. (Ein Entität kann eine Person, ein Softwareprozess, ein Unternehmen oder alle Elemente, die autorisiert werden kann.) Ein Client eines Diensts macht z. B. eine Anspruch von Identität, und die Anmeldeinformationen Beweisen diese Angaben auf eine Weise.(An entity can be a person, a software process, a company, or anything that can be authorized.) For example, a client of a service makes a claim of identity, and the credential proves that claim in some manner. In einem typischen Szenario tritt ein Austausch von Anmeldeinformationen auf.In a typical scenario, an exchange of credentials occurs. Zunächst erklärt ein Dienst seinen Identitätsanspruch und erbringt dem Client in Form von Anmeldeinformationen den entsprechenden Nachweis.First, a service makes a claim of its identity and proves it to the client with a credential. Umgekehrt erklärt der Client einen Identitätsanspruch und legt dem Dienst seine Anmeldeinformationen vor.Conversely, the client makes a claim of identity and presents a credential to the service. Wenn die beiden Parteien die Anmeldeinformationen der jeweils anderen Partei als vertrauenswürdig einstufen, kann ein sicherer Kontext eingerichtet werden, in dem alle Nachrichten vertraulich ausgetauscht werden, und in dem alle Nachrichten zum Schutz ihrer Integrität signiert werden.If both parties trust the other's credentials, then a secure context can be established in which all messages are exchanged in confidentiality, and all messages are signed to protect their integrity. Nach der Einrichtung der Clientidentität durch den Dienst können die Ansprüche in den Anmeldeinformationen mit einer Rolle oder Mitgliedschaft in einer Gruppe abgeglichen werden.After the service establishes the client's identity, it can then match the claims in the credential to a role or membership in a group. In beiden Fällen autorisiert der Dienst den Client mit der Rolle oder der Gruppe, zu der der Client gehört, für die Durchführung einer begrenzten Anzahl von Vorgängen auf Grundlage der Rollen- oder Gruppenberechtigungen.In either case, using the role or the group to which the client belongs, the service authorizes the client to perform a limited set of operations based on the role or group privileges.

Windows-SicherheitsmechanismenWindows Security Mechanisms

Befinden sich sowohl der Client als auch der Dienstcomputer in einer Windows-Domäne, die den Client und den Computer zur Anmeldung am Netzwerk auffordert, werden die Anmeldeinformationen von der Windows-Infrastruktur bereitgestellt.If the client and the service computer are both on a Windows domain that requires both to log on to the network, the credentials are provided by Windows infrastructure. In diesem Fall werden die Anmeldeinformationen angegeben, wenn sich ein Computerbenutzer am Netzwerk anmeldet.In that case, the credentials are established when a computer user logs on to the network. Jeder Benutzer und Computer im Netzwerk muss so überprüft werden, als ob er zur vertrauenswürdigen Benutzer- und Computergruppe gehört.Every user and every computer on the network must be validated as belonging to the trusted set of users and computers. Auf einem Windows-System werden jeder derartige Benutzer und Computer auch als Sicherheitsprinzipalbezeichnet.On a Windows system, every such user and computer is also known as a security principal.

In einer durch einen Kerberos -Controller gesicherten Windows-Domäne wird ein Schema verwendet, das auf dem Gewähren von Tickets für jeden Sicherheitsprinzipal basiert.On a Windows domain backed by a Kerberos controller, the Kerberos controller uses a scheme based on granting tickets to each security principal. Die vom Controller gewährten Tickets werden von anderen Komponenten im System, die Tickets gewähren, als vertrauenswürdig eingestuft.The tickets the controller grants are trusted by other ticket granters in the system. Wenn eine Entität versucht, einen Vorgang auszuführen oder auf eine Ressource zuzugreifen, (wie eine Datei oder ein Verzeichnis auf einem Computer), wird das Ticket auf seine Gültigkeit überprüft. Bei Bestehen der Gültigkeitsprüfung wird dem Prinzipal ein weiteres Ticket für den Vorgang gewährt.Whenever an entity tries to perform some operation or access a resource (such as a file or directory on a machine), the ticket is examined for its validity and, if it passes, the principal is granted another ticket for the operation. Diese Methode der Ticketgewährung ist effizienter als die Überprüfung des Prinzipals bei jedem Vorgang.This method of granting tickets is more efficient than the alternative of trying to validate the principal for every operation.

Ein älterer, auf Windows-Domänen verwendeter und weniger sicherer Mechanismus ist NT-LAN-Manager (NTLM).An older, less-secure mechanism used on Windows domains is NT LAN Manager (NTLM). In Fällen, in denen Kerberos nicht verwendbar ist (normalerweise außerhalb einer Windows-Domäne, zum Beispiel in einer Arbeitsgruppe), kann alternativ NTLM verwendet werden.In cases where Kerberos cannot be used (typically outside of a Windows domain, such as in a workgroup), NTLM can be used as an alternative. NTLM ist auch als Sicherheitsoption für IIS verfügbar.NTLM is also available as a security option for IIS.

Auf einem Windows-System funktioniert die Autorisierung durch Zuweisen jedes Computers und Benutzers zu einem Rollen- oder Gruppensatz.On a Windows system, authorization works by assigning each computer and user to a set of roles and groups. Beispielsweise muss jeder Windows-Computer von einer Person (oder Gruppe von Personen) in der Rolle des Administratorseingerichtet und gesteuert werden.For example, every Windows computer must be set up and controlled by a person (or group of people) in the role of the administrator. Eine andere Rolle ist die des Benutzers, der über einen weitaus stärker eingeschränkten Berechtigungssatz verfügt.Another role is that of the user, which has a much more constrained set of permissions. Zusätzlich zur Rolle werden Benutzer Gruppen zugewiesen.In addition to the role, users are assigned to groups. Eine Gruppe ermöglicht mehreren Benutzern, Vorgänge in derselben Rolle auszuführen.A group allows multiple users to perform in the same role. In der Praxis wird ein Windows-Computer daher durch Zuweisen von Benutzern zu Gruppen verwaltet.In practice, therefore, a Windows machine is administered by assigning users to groups. Beispielsweise können mehrere Benutzer der Gruppe von Computerbenutzern zugewiesen werden, und eine weitaus stärker begrenzte Benutzergruppe kann der Administratorgruppe hinzugefügt werden.For example, several users can be assigned to the group of users of a computer, and a much more constrained set of users can be assigned to the group of administrators. Auf einem lokalen Computer kann ein Administrator auch neue Gruppen erstellen und der Gruppe andere Benutzern zuweisen (oder auch andere Gruppen).On a local machine, an administrator can also create new groups and assign other users (or even other groups) to the group.

Auf einem Computer, der unter Windows ausgeführt wird, kann jeder Ordner in einem Verzeichnis geschützt werden.On a computer running Windows, every folder in a directory can be protected. Dies bedeutet, dass Sie einen Ordner auswählen und steuern können, wer auf die Dateien zugreifen darf und ob das Kopieren oder (bei den am weitesten reichenden Berechtigungen) Ändern und Löschen der Datei bzw. das Hinzufügen von Dateien zum Ordner zulässig sind.That is, you can select a folder and control who can access the files, and whether or not they can copy the file, or (in the most privileged case) change a file, delete a file, or add files to the folder. Dies wird als Zugriffssteuerung bezeichnet, und der entsprechende Mechanismus ist unter dem Namen Zugriffssteuerungsliste (ACL) bekannt.This is known as access control, and the mechanism for it is known as the access control list (ACL). Beim Erstellen der Zugriffssteuerungsliste können jeder beliebigen Gruppe sowie einzelnen Mitgliedern einer Domäne Zugriffsberechtigungen erteilt werden.When creating the ACL, you can assign access privileges to any group or groups, as well as individual members of a domain.

Die WCFWCF -Infrastruktur ist für die Verwendung dieser Windows-Sicherheitsmechanismen konzipiert.The WCFWCF infrastructure is designed to use these Windows security mechanisms. Beim Erstellen eines Diensts, der in einem Intranet bereitgestellt wird, und dessen Clients auf Mitglieder der Windows-Domäne beschränkt sind, wird die Sicherheit problemlos implementiert.Therefore, if you are creating a service that is deployed on an intranet, and whose clients are restricted to members of the Windows domain, security is easily implemented. Nur gültige Benutzer können sich an der Domäne anmelden.Only valid users can log on to the domain. Nach der Anmeldung der Benutzer ermöglicht der Kerberos-Controller jedem Benutzer die Einrichtung sicherer Kontexte mit einem beliebigen Computer oder einer Anwendung.After users are logged on, the Kerberos controller enables each user to establish secure contexts with any other computer or application. Auf einem lokalen Computer können problemlos Gruppen erstellt werden, und beim Schutz von bestimmten Ordnern können mit diesen Gruppen Zugriffsberechtigungen auf dem Computer zugewiesen werden.On a local machine, groups can be easily created, and when protecting specific folders, those groups can be used to assign access privileges on the computer.

Implementieren von Windows-Sicherheit auf IntranetdienstenImplementing Windows Security on Intranet Services

Soll eine Anwendung gesichert werden, die exklusiv auf einer Windows-Domäne ausgeführt wird, können die Standardsicherheitseinstellungen von entweder der WSHttpBinding -Bindung oder der NetTcpBinding -Bindung verwendet werden.To secure an application that runs exclusively on a Windows domain, you can use the default security settings of either the WSHttpBinding or the NetTcpBinding binding. Standardmäßig kann jeder Benutzer auf derselben Windows-Domäne auf WCFWCF -Dienste zugreifen.By default, anyone on the same Windows domain can access WCFWCF services. Da sich diese Benutzer am Netzwerk angemeldet haben, werden sie als vertrauenswürdig eingestuft.Because those users have logged on to the network, they are trusted. Die Nachrichten zwischen einem Dienst und einem Client werden aus Vertraulichkeitsgründen verschlüsselt und zu Integritätszwecken signiert.The messages between a service and a client are encrypted for confidentiality and signed for integrity. Weitere Informationen finden Sie unterFor more information about zum Erstellen eines Diensts mit Windows-Sicherheit finden Sie unter How to: Secure a Service with Windows Credentials. how to create a service that uses Windows security, see How to: Secure a Service with Windows Credentials.

Autorisierung mithilfe der PrincipalPermissionAttribute-KlasseAuthorization Using the PrincipalPermissionAttribute Class

Muss der Zugriff auf die Ressourcen auf einem Computer beschränkt werden, besteht die einfachste Möglichkeit in der Verwendung der PrincipalPermissionAttribute -Klasse.If you need to restrict the access of resources on a computer, the easiest way is to use the PrincipalPermissionAttribute class. Mit diesem Attribut können Aufrufe von Dienstvorgängen eingeschränkt werden, indem gefordert wird, dass sich der Benutzer in einer angegebenen Windows-Gruppe oder -Rolle befinden oder ein bestimmter Benutzer sein muss.This attribute enables you to restrict the invocation of service operations by demanding that the user be in a specified Windows group or role, or to be a specific user. Weitere Informationen finden Sie unterFor more information, seeWie: Beschränken des Zugriffs mit der PrincipalPermissionAttribute-Klasse. How to: Restrict Access with the PrincipalPermissionAttribute Class.

IdentitätswechselImpersonation

Der Identitätswechsel ist ein weiterer Mechanismus, mit dem Sie den Zugriff auf Ressourcen steuern können.Impersonation is another mechanism that you can use to control access to resources. Standardmäßig wird ein von IIS gehosteter Dienst unter der Identität des ASPNET-Kontos ausgeführt.By default, a service hosted by IIS will run under the identity of the ASPNET account. Das ASPNET-Konto kann nur auf die Ressourcen zugreifen, für die es eine entsprechende Berechtigung besitzt.The ASPNET account can access only the resources for which it has permission. Allerdings kann die Zugriffssteuerungsliste für einen Ordner so festgelegt werden, dass das ASPNET-Dienstkonto ausgeschlossen wird, bestimmten anderen Identitäten jedoch der Zugriff auf den Ordner gewährt wird.However, it is possible to set the ACL for a folder to exclude the ASPNET service account, but allow certain other identities to access the folder. Die Frage ist nun, wie diesen Benutzer Zugriff auf den Ordner gewährt wird, falls das ASPNET-Konto nicht dazu berechtigt ist.The question then becomes how to allow those users to access the folder if the ASPNET account is not allowed to do so. Dies wird durch den Identitätswechsel ermöglicht, bei dem der Dienst die Anmeldeinformationen des Clients für den Zugriff auf eine bestimmte Ressource verwenden darf.The answer is to use impersonation, whereby the service is allowed to use the credentials of the client to access a particular resource. Ein weiteres Beispiel ist der Zugriff auf eine SQL Server-Datenbank, auf die nur bestimmte Benutzer zugreifen dürfen.Another example is when accessing a SQL Server database to which only certain users have permission. Weitere Informationen finden Sie unterFor more information aboutMithilfe des Identitätswechsels, finden Sie unter Vorgehensweise: annehmen der Clientidentität für einen Dienst und Delegierung und Identitätswechsel. using impersonation, see How to: Impersonate a Client on a Service and Delegation and Impersonation.

Sicherheit im InternetSecurity on the Internet

Bei der Sicherheit im Internet gelten dieselben Anforderungen wie bei der Sicherheit in einem Intranet.Security on the Internet consists of the same requirements as security on an intranet. Ein Dienst muss zum Nachweis seiner Authentizität seine Anmeldeinformationen angeben, und Clients müssen dem Dienst ihre Identität nachweisen.A service needs to present its credentials to prove its authenticity, and clients need to prove their identity to the service. Wurde die Identität eines Clients nachgewiesen, kann der Umfang des Ressourcenzugriffs für den Client vom Dienst gesteuert werden.Once a client's identity is proven, the service can control how much access the client has to resources. Aufgrund des heterogenen Charakters des Internets unterscheiden sich die angegebenen Anmeldeinformationen von denen, die in einer Windows-Domäne verwendet werden.However, due to the heterogeneous nature of the Internet, the credentials presented differ from those used on a Windows domain. Während ein Kerberos-Controller die Authentifizierung von Benutzern in einer Domäne mit Tickets für Anmeldeinformationen verarbeitet, nutzen Dienste und Clients im Internet eine der mehreren verschiedenen Möglichkeiten zur Angabe von Anmeldeinformationen.Whereas a Kerberos controller handles the authentication of users on a domain with tickets for credentials, on the Internet, services and clients rely on any one of several different ways to present credentials. Ziel dieses Themas ist jedoch die Beschreibung einer allgemeinen Vorgehensweise, mit der ein im Internet verfügbarer WCFWCF -Dienst erstellt werden kann.The objective of this topic, however, is to present a common approach that enables you to create a WCFWCF service that is accessible on the Internet.

Verwenden von IIS und ASP.NETUsing IIS and ASP.NET

Die Anforderungen der Internetsicherheit und die Mechanismen für die Problemlösung sind nicht neu.The requirements of Internet security, and the mechanisms to solve those problems, are not new. IIS ist der von Microsoft stammende Webserver für das Internet, der über zahlreiche Sicherheitsfunktionen zur Behandlung dieser Probleme verfügt. Zudem beinhaltet ASP.NETASP.NET Sicherheitsfunktionen, die von WCFWCF -Diensten verwendet werden können.IIS is Microsoft's Web server for the Internet and has many security features that address those problems; in addition, ASP.NETASP.NET includes security features that WCFWCF services can use. Um diese Sicherheitsfunktionen zu nutzen, muss ein WCFWCF -Dienst auf IIS gehostet werden.To take advantage of these security features, host an WCFWCF service on IIS.

Verwenden von ASP.NET-Mitgliedschaft und RollenanbieternUsing ASP.NET Membership and Role Providers

ASP.NET beinhaltet eine Mitgliedschaft und einen Rollenanbieter.ASP.NET includes a membership and role provider. Der Anbieter ist eine Datenbank mit Benutzernamen-/Kennwortpaaren für die Authentifizierung von Aufrufenden, mit der auch die Zugriffsberechtigungen jedes Aufrufenden angegeben werden können.The provider is a database of user name/password pairs for authenticating callers that also allows you to specify each caller's access privileges. Mit WCFWCFkönnen Sie durch Konfiguration problemlos eine bereits vorhandene Mitgliedschaft und einen Rollenanbieter verwenden.With WCFWCF, you can easily use a pre-existing membership and role provider through configuration. Eine Beispielanwendung, die dies veranschaulicht, finden Sie im Beispiel Membership and Role Provider .For a sample application that demonstrates this, see the Membership and Role Provider sample.

Von IIS verwendete AnmeldeinformationenCredentials Used by IIS

Im Gegensatz zu einer Windows-Domäne, die von einem Kerberos-Controller gesichert wird, ist das Internet eine Umgebung ohne einen Controller zur Verwaltung der jederzeit stattfindenden Anmeldungen von Millionen von Benutzern.Unlike a Windows domain backed by a Kerberos controller, the Internet is an environment without a single controller to manage the millions of users logging on at any time. Stattdessen werden Anmeldeinformationen im Internet meist in Form von X.509-Zertifikaten (auch als Secure Sockets Layer- oder SSL-Zertifikate) angegeben.Instead, credentials on the Internet most often are in the form of X.509 certificates (also known as Secure Sockets Layer, or SSL, certificates). Diese Zertifikate werden normalerweise von einer Zertifizierungsstelleausgestellt, bei der es sich um ein drittes Unternehmen handeln kann, das für die Authentizität des Zertifikats und der Person, für die das Zertifikat ausgestellt wurde, bürgt.These certificates are typically issued by a certification authority, which can be a third-party company that vouches for the authenticity of the certificate and the person it has been issued to. Soll der Dienst im Internet verfügbar gemacht werden, muss zur Authentifizierung des Diensts auch ein derartiges vertrauenswürdiges Zertifikat bereitgestellt werden.To expose your service on the Internet, you must also supply such a trusted certificate to authenticate your service.

An diesem Punkt stellt sich die Frage, wie man ein solches Zertifikat erhält.The question arises at this point, how do you get such a certificate? Wenn Sie den Dienst bereitstellen können, besteht die Möglichkeit, sich an eine dritte Zertifizierungsstelle zu wenden (zum Beispiel Authenticode oder VeriSign) und ein Zertifikat für den Dienst zu erwerben.One approach is to go to a third-party certification authority, such as Authenticode or VeriSign, when you are ready to deploy your service, and purchase a certificate for your service. Wenn sich WCFWCF jedoch noch in der Entwicklungsphase befindet und Sie noch kein Zertifikat erwerben können, erstellen Sie mithilfe spezieller Tools und Methoden X.509-Zertifikate, um eine Produktionsbereitstellung zu simulieren.However, if you are in the development phase with WCFWCF and not yet ready to commit to purchasing a certificate, tools and techniques exist for creating X.509 certificates that you can use to simulate a production deployment. Weitere Informationen finden Sie unterFor more information, seeArbeiten mit Zertifikaten. Working with Certificates.

SicherheitsmodiSecurity Modes

Die Programmierung von WCFWCF -Sicherheit erfordert einige wichtige Entscheidungen.Programming WCFWCF security entails a few critical decision points. Von grundlegender Bedeutung ist hier die Wahl des Sicherheitsmodus.One of the most basic is the choice of security mode. Die zwei Hauptsicherheitsmodi sind der Transportmodus und der Nachrichtenmodus.The two major security modes are transport mode and message mode.

Ein dritter Modus, der die Semantik der beiden Hauptmodi kombiniert, ist der Transport mit dem Modus für Nachrichtenanmeldeinformationen.A third mode, which combines the semantics of both major modes, is transport with message credentials mode.

Mit dem Sicherheitsmodus wird die Sicherungsform der Nachrichten bestimmt, wobei jede gewählte Variante Vor- und Nachteile aufweist (siehe unten).The security mode determines how messages are secured, and each choice has advantages and disadvantages, as explained below. Weitere Informationen finden Sie unterFor more information about zum Festlegen des Sicherheitsmodus finden Sie unter How to: Set the Security Mode. setting the security mode, see How to: Set the Security Mode.

TransportmodusTransport Mode

Zwischen dem Netzwerk und der Anwendung befinden sich mehrere Ebenen.There are several layers between the network and the application. Eine dieser Ebenen ist die Transportebene ,die die Übertragung von Nachrichten zwischen Endpunkten verwaltet.One of these is the transport layer, which manages the transfer of messages between endpoints. Derzeit genügt es, wenn Sie wissen, dass von WCFWCF mehrere Transportprotokolle verwendet werden, die alle für die Sicherung der Nachrichtenübertragung geeignet sind.For the present purpose, it is only required that you understand that WCFWCF uses several transport protocols, each of which can secure the transfer of messages. (Weitere Informationen finden Sie unterFor more information about Transporte, finden Sie unter Transporte.)(Weitere Informationen finden Sie unterFor more information about transports, see Transports.)

Ein häufig verwendetes Protokoll ist HTTP, ein weiteres TCP.A commonly used protocol is HTTP; another is TCP. Mit jedem dieser Protokolle kann Nachrichtenübertragung durch einen protokollspezifischen Mechanismus (oder Mechanismen) gesichert werden.Each of these protocols can secure message transfer by a mechanism (or mechanisms) particular to the protocol. Zum Beispiel wird das HTTP-Protokoll mit SSL über HTTP (im Allgemeinen als "HTTPS" bezeichnet) gesichert.For example, the HTTP protocol is secured using SSL over HTTP, commonly abbreviated as "HTTPS." Wird aus Sicherheitsgründen der Transportmodus gewählt, wird daher der Mechanismus entsprechend der Vorgabe durch das Protokoll verwendet.Thus, when you select the transport mode for security, you are choosing to use the mechanism as dictated by the protocol. Wird beispielsweise die WSHttpBinding -Klasse ausgewählt und der Sicherheitsmodus auf Transport festgelegt, wählen Sie als Sicherheitsmechanismus SSL über HTTP (HTTPS).For example, if you select the WSHttpBinding class and set its security mode to Transport, you are selecting SSL over HTTP (HTTPS) as the security mechanism. Der Vorteil des Transportmodus besteht in seiner im Vergleich zum Nachrichtenmodus höheren Effizienz, die durch die Integration der Sicherheit auf einer relativ niedrigen Ebene erzielt wird.The advantage of the transport mode is that it is more efficient than message mode because security is integrated at a comparatively low level. Bei Verwendung des Transportmodus muss der Sicherheitsmodus gemäß den Angaben für den Transport implementiert werden. Dadurch wird gewährleistet, dass Nachrichten beim Transport sicher übertragen werden, und zwar nur von einem Punkt zu einem anderen Punkt (Point-to-Point).When using transport mode, the security mechanism must be implemented according to the specification for the transport, and thus messages can flow securely only from point-to-point over the transport.

NachrichtenmodusMessage Mode

Im Gegensatz dazu gewährleistet der Nachrichtenmodus Sicherheit durch Einbeziehen der Sicherheitsdaten als Teil jeder Nachricht.In contrast, message mode provides security by including the security data as part of every message. Mit XML- und SOAP-Sicherheitsheadern werden die Anmeldeinformationen und andere Daten, die zur Sicherstellung der Integrität und Vertraulichkeit der Nachricht erforderlich sind, in jede Nachricht eingefügt.Using XML and SOAP security headers, the credentials and other data needed to ensure the integrity and confidentiality of the message are included with every message. Die Leistung wird beeinträchtigt, da jede Nachricht Sicherheitsdaten beinhaltet und jede Nachricht einzeln verarbeitet werden muss.Every message includes security data, so it results in a toll on performance because each message must be individually processed. (Nach der Sicherung der Transportebene werden alle Nachrichten im Transportmodus frei übertragen.) Nachrichtensicherheit besitzt jedoch gegenüber der Transportsicherheit den Vorteil der höheren Flexibilität.(In transport mode, once the transport layer is secured, all messages flow freely.) However, message security has one advantage over transport security: it is more flexible. Das heißt, dass die Sicherheitsanforderungen nicht vom Transport bestimmt werden.That is, the security requirements are not determined by the transport. Sie können jeden Typ der Clientanmeldeinformationen zum Sichern der Nachricht verwenden.You can use any type of client credential to secure the message. (Im Transportmodus bestimmt das Transportprotokoll den Typ der Clientanmeldeinformationen, die Sie verwenden können.)(In transport mode, the transport protocol determines the type of client credential that you can use.)

Transport mit NachrichtenanmeldeinformationenTransport with Message Credentials

Der dritte Modus vereint die Vorteile der Transport- und der Nachrichtensicherheit.The third mode combines the best of both transport and message security. In diesem Modus wird Transportsicherheit verwendet, um die Vertraulichkeit und die Integrität jeder Nachricht effizient sicherzustellen.In this mode, transport security is used to efficiently ensure the confidentiality and integrity of every message. Gleichzeitig beinhaltet jede Nachricht ihre Anmeldeinformationsdaten, wodurch die Authentifizierung der Nachricht ermöglicht wird.At the same time, every message includes its credential data, which allows the message to be authenticated. Mit der Authentifizierung kann auch die Autorisierung implementiert werden.With authentication, authorization can also be implemented. Durch Authentifizieren eines Absenders kann der Zugriff auf Ressourcen entsprechend der Identität des Absenders gewährt (oder verweigert) werden.By authenticating a sender, access to resources can be granted (or denied) according to the sender's identity.

Angeben von Anmeldeinformationstyp und -wert für den ClientSpecifying the Client Credential Type and Credential Value

Nach Auswahl eines Sicherheitsmodus können Sie auf Wunsch auch einen Clientanmeldeinformationstyp angeben.After you have selected a security mode, you may also want to specify a client credential type. Der Clientanmeldeinformationstyp gibt an, welchen Typ ein Client verwenden muss, um sich selbst beim Server authentifizieren zu können.The client credential type specifies what type a client must use to authenticate itself to the server.

Allerdings erfordern nicht alle Szenarien einen Clientanmeldeinformationstyp.Not all scenarios require a client credential type, however. Bei Verwendung von SSL über HTTP (HTTPS) authentifiziert sich ein Dienst beim Client.Using SSL over HTTP (HTTPS), a service authenticates itself to the client. Im Rahmen dieser Authentifizierung wird das Zertifikat des Diensts in einem als Aushandlungbezeichneten Prozess an den Client gesendet.As part of this authentication, the service's certificate is sent to the client in a process called negotiation. Der durch SSL gesicherte Transport gewährleistet, dass alle Nachrichten vertraulich sind.The SSL-secured transport ensures that all messages are confidential.

Wird ein Dienst erstellt, der eine Authentifizierung des Clients erfordert, hängt die Wahl eines Clientanmeldeinformationstypen vom ausgewählten Transport und Modus ab.If you are creating a service that requires that the client be authenticated, your choice of a client credential type depends on the transport and mode selected. Bei Verwendung des HTTP-Transports und bei Auswahl des Transportmodus stehen Ihnen mehrere Möglichkeiten zur Verfügung, wie zum Beispiel Basic, Digest usw.For example, using the HTTP transport and choosing transport mode gives you several choices, such as Basic, Digest, and others. (Weitere Informationen finden Sie unterFor more information about zu diesen Anmeldeinformationstypen finden Sie unter Understanding HTTP Authenticationbeschrieben.)(Weitere Informationen finden Sie unterFor more information about these credential types, see Understanding HTTP Authentication.)

Wird ein Dienst in einer Windows-Domäne erstellt, der nur anderen Benutzern des Netzwerks zur Verfügung steht, empfiehlt sich die Verwendung des Windows-Clientanmeldeinformationstyps.If you are creating a service on a Windows domain that will be available only to other users of the network, the easiest to use is the Windows client credential type. Allerdings muss für den Dienst ggf. auch ein Zertifikat erworben werden.However, you may also need to provide a service with a certificate. Dieser Vorgang wird in How to: Specify Client Credential Valuesbeschrieben.This is shown in How to: Specify Client Credential Values.

AnmeldeinformationswerteCredential Values

Bei einem Anmeldeinformationswert handelt es sich um die tatsächlichen Anmeldeinformationen, die vom Dienst verwendet werden.A credential value is the actual credential the service uses. Nach Angabe eines Anmeldeinformationstyps muss der Dienst unter Umständen auch mit den tatsächlichen Anmeldeinformationen konfiguriert werden.Once you have specified a credential type, you may also need to configure your service with the actual credentials. Wurde Windows ausgewählt (und wird der Dienst in einer Windows-Domäne ausgeführt), wird kein tatsächlicher Anmeldeinformationswert angegeben.If you have selected Windows (and the service will run on a Windows domain), then you do not specify an actual credential value.

IdentitätIdentity

In WCFWCFbesitzt der Begriff Identität andere Bedeutungen für den Server und den Client.In WCFWCF, the term identity has different meanings to the server and the client. Zusammenfassend bedeutet dies, dass beim Ausführen eines Diensts dem Sicherheitskontext nach der Authentifizierung eine Identität zugewiesen wird.In brief, when running a service, an identity is assigned to the security context after authentication. Um die tatsächliche Identität anzuzeigen, überprüfen Sie die WindowsIdentity -Eigenschaft und die PrimaryIdentity -Eigenschaft der ServiceSecurityContext -Klasse.To view the actual identity, check the WindowsIdentity and PrimaryIdentity properties of the ServiceSecurityContext class. Weitere Informationen finden Sie unterFor more information, seeVorgehensweise: Prüfen des Sicherheitskontexts. How to: Examine the Security Context.

Im Gegensatz dazu wird mit der Identität der Dienst geprüft.In contrast, on the client, identity is used to validate the service. Zur Entwurfszeit kann ein Cliententwickler legen die <Identität > Element auf einen Wert, der vom Dienst abgerufen.At design time, a client developer can set the <identity> element to a value obtained from the service. Während der Laufzeit gleicht der Client den Wert des Elements mit der tatsächlichen Identität des Diensts ab.At run time, the client checks the value of the element against the actual identity of the service. Bei fehlerhafter Prüfung wird die Kommunikation vom Client beendet.If the check fails, the client terminates the communication. Der Wert kann ein Benutzerprinzipalname sein (UPN), falls der Dienst unter einer bestimmten Benutzeridentität ausgeführt wird oder ein Dienstprinzipalname (SPN), falls der Dienst unter einem Computerkonto ausgeführt wird.The value can be a user principal name (UPN) if the service runs under a particular user's identity or a service principal name (SPN) if the service runs under a machine account. Weitere Informationen finden Sie unterFor more information, see-Identität und Authentifizierung. Service Identity and Authentication. Die Anmeldeinformationen können auch ein Zertifikat oder ein Feld auf einem Zertifikat sein, mit dem das Zertifikat identifiziert wird.The credential could also be a certificate, or a field found on a certificate that identifies the certificate.

SchutzebenenProtection Levels

Die ProtectionLevel -Eigenschaft tritt auf mehreren Attributklassen (zum Beispiel der ServiceContractAttribute -Klasse und der OperationContractAttribute -Klasse) auf.The ProtectionLevel property occurs on several attribute classes (such as the ServiceContractAttribute and the OperationContractAttribute classes). Die Schutzebene ist ein Wert, der angibt, ob die Meldungen (oder Meldungsteile), die einen Dienst unterstützen, signiert, signiert und verschlüsselt oder ohne Signaturen und Verschlüsselung gesendet werden.The protection level is a value that specifies whether the messages (or message parts) that support a service are signed, signed and encrypted, or sent without signatures or encryption. Weitere Informationen finden Sie unterFor more information aboutdie Eigenschaft finden Sie unter Verständnis Schutzebene, und Programmierbeispiele finden Sie unter Vorgehensweise: Festlegen der ProtectionLevel-Eigenschaft. the property, see Understanding Protection Level, and for programming examples, see How to: Set the ProtectionLevel Property. Weitere Informationen finden Sie unterFor more information about zum Entwerfen eines Dienstvertrags mit ProtectionLevel im Kontext finden Sie unter Designing Service Contracts. designing a service contract with the ProtectionLevel in context, see Designing Service Contracts.

Siehe auchSee Also

System.ServiceModel
ServiceCredentials
ServiceContractAttribute
OperationContractAttribute
Dienstidentität und AuthentifizierungService Identity and Authentication
Grundlagen der SchutzebeneUnderstanding Protection Level
Delegierung und IdentitätswechselDelegation and Impersonation
Entwerfen von DienstverträgenDesigning Service Contracts
SicherheitSecurity
Übersicht über die SicherheitSecurity Overview
Vorgehensweise: Festlegen der ProtectionLevel-EigenschaftHow to: Set the ProtectionLevel Property
Vorgehensweise: Sichern eines Dienstes mit Windows-AnmeldeinformationenHow to: Secure a Service with Windows Credentials
Vorgehensweise: Festlegen des SicherheitsmodusHow to: Set the Security Mode
Vorgehensweise: Angeben des Typs von ClientanmeldeinformationenHow to: Specify the Client Credential Type
Vorgehensweise: Einschränken des Zugriffs mit der PrincipalPermissionAttribute-KlasseHow to: Restrict Access with the PrincipalPermissionAttribute Class
Vorgehensweise: Annahme der Clientidentität durch einen DienstHow to: Impersonate a Client on a Service
Vorgehensweise: Prüfen des SicherheitskontextsHow to: Examine the Security Context