Sichern von Nachrichten mithilfe der Nachrichtensicherheit
In diesem Abschnitt wird die WCF-Nachrichtensicherheit bei der Verwendung von NetMsmqBinding erläutert.
Hinweis
Es wird empfohlen, vor diesem Thema zuerst Sicherheitskonzepte zu lesen.
Die folgende Abbildung zeigt ein konzeptionelles Modell der Kommunikation in der Warteschlange mithilfe von WCF. Anhand dieser Abbildung und der Terminologie werden
die Konzepte der Transportsicherheit erläutert.
Beim Senden von Nachrichten in der Warteschlange mit WCF wird die WCF-Nachricht als Textkörper der Message Queuing-Nachricht (MSMQ) angehängt. Mit der Transportsicherheit wird die gesamte MSMQ-Nachricht gesichert, mit der Nachrichtensicherheit (oder SOAP-Sicherheit) hingegen wird nur der Textkörper der MSMQ-Nachricht gesichert.
Das Kernkonzept der Nachrichtensicherheit besteht darin, dass der Client die Nachricht für die empfangende Anwendung (Dienst) sichert. Im Gegensatz dazu sichert der Client bei der Transportsicherheit die Nachricht für die Zielwarteschlange. Daher spielt MSMQ keine Rolle bei der Sicherung der WCF-Nachricht mithilfe der Nachrichtensicherheit.
Die WCF-Nachrichtensicherheit fügt der WCF-Nachricht Sicherheitsheader hinzu, die in vorhandene Sicherheitsinfrastrukturen integriert werden, beispielsweise ein Zertifikat oder das Kerberos-Protokoll.
Anmeldeinformationstypen für Nachrichten
Bei der Verwendung der Nachrichtensicherheit können der Dienst und der Client Anmeldeinformationen bereitstellen, um sich gegenseitig zu authentifizieren. Sie können die Nachrichtensicherheit auswählen, indem Sie den Security-Modus auf Message
oder Both
(d. h. Transport- und Nachrichtensicherheit werden verwendet) festlegen.
Der Dienst kann anhand der Current-Eigenschaft die Anmeldeinformationen überprüfen, mit denen der Client authentifiziert wird. Damit können weitere Autorisierungsüberprüfungen vorgenommen werden, die der Dienst zur Implementierung auswählen kann.
Dieser Abschnitt erklärt die verschiedenen Anmeldeinformationstypen und ihre Verwendung mit Warteschlangen.
Zertifikat
Der Zertifikat-Anmeldeinformationstyp identifiziert mit einem X.509-Zertifikat den Dienst und den Client.
In einem typischen Szenario stellt eine vertrauenswürdige Zertifizierungsstelle dem Client und dem Dienst ein gültiges Zertifikat aus. Dann wird die Verbindung hergestellt, und der Client authentifiziert die Gültigkeit des Dienstes, indem er anhand des Zertifikat des Dienstes entscheidet, ob der Dienst vertrauenswürdig ist. Entsprechend verwendet der Dienst das Zertifikat des Clients, um dessen Vertrauenswürdigkeit zu überprüfen.
Da im Fall von Warteschlangen nicht immer eine Verbindung hergestellt ist, sind der Client und der Dienst möglicherweise nicht zur selben Zeit online. Daher müssen der Client und der Dienst Zertifikate out-of-band austauschen. Insbesondere der Client, bei dem sich das Dienstzertifikat (das mit einer Zertifizierungsstelle verkettet sein kann) im vertrauenswürdigen Speicher befindet, muss verlässlich mit dem richtigen Dienst kommunizieren. Zur Authentifizierung des Clients gleicht der Dienst das X.509-Zertifikat, das an die Nachricht angehängt ist, mit dem Zertifikat in seinem Speicher ab, um die Echtzeit des Clients zu überprüfen. Auch hier muss das Zertifikat mit einer Zertifizierungsstelle verkettet sein.
Auf einem Computer unter Windows befinden sich die Zertifikate in verschiedenen Arten von Speichern. Weitere Informationen zu den verschiedenen Speichern finden Sie unter Zertifikatspeicher.
Windows
Der Windows-Anmeldeinformationstyp für Nachrichten verwendet das Kerberos-Protokoll.
Das Kerberos-Protokoll ist ein Sicherheitsmechanismus, der Benutzer in einer Domäne authentifiziert und den authentifizierten Benutzern das Erstellen sicherer Kontexte mit anderen Entitäten einer Domäne ermöglicht.
Die Verwendung des Kerberos-Protokolls für die Kommunikation unter Verwendung von Warteschlangen ist problematisch, insofern als die vom Schlüsselverteilungscenter verteilten Tickets mit der Clientidentität relativ kurzlebig sind. Dem Kerberos-Ticket wird eine Lebenszeit zugeordnet, die die Gültigkeit des Tickets angibt. Bei einer hohen Latenz können Sie somit nicht sicher sein, ob das Token noch für den Dienst gültig ist, der den Client authentifiziert.
Wenn dieser Anmeldeinformationstyp verwendet wird, muss der Dienst unter dem SERVICE-Konto ausgeführt werden.
Das Kerberos-Protokoll wird standardmäßig bei der Auswahl von Nachrichtenanmeldeinformationen verwendet.
Benutzernamenkennwort (Username Password)
Mit dieser Eigenschaft kann sich der Client beim Server durch Angabe eines Benutzernamenkennworts im Sicherheitsheader der Nachricht authentifizieren.
IssuedToken
Der Client kann den Sicherheitstokendienst zum Ausstellen eines Tokens verwenden. Dieses Token kann dann der Nachricht angefügt werden, um den Client für den Dienst zu identifizieren.
Verwenden der Transport- und der Nachrichtensicherheit
Wenn die Transportsicherheit und die Nachrichtensicherheit verwendet werden, muss das auf der Transportebene zum Sichern der Nachricht verwendete Zertifikat mit dem auf der SOAP-Nachrichtenebene verwendeten Zertifikat identisch sein.