Nachrichtenflüsse werden importiert, ohne dass WS-Security aktiviert ist. Ähnlich wie beim TCP/IP-Monitor mit SOAP über HTTP kann jeder den Web-Service aufrufen und die Nachrichten lesen. Eine Beschreibung der Aktivierung von WS-Security in Form einer Verschlüsselung (Vertraulichkeit) und Signierung (Integrität) finden Sie im Abschnitt Mustercode 'Address Book' erweitern.
Die Aktivierung von WS-Security ist eine Verwaltungsaufgabe, die auf der WebSphere Message Broker-Ebene ausgeführt wird. Die Sicherheit kann beim Entwickeln der Nachrichtenflüsse nicht konfiguriert werden; Sie müssen Richtlinien und Bindungen im Broker konfigurieren und sie mit Nachrichtenflüssen in einer Brokerarchivdatei (BAR) verknüpfen.
Im erweiterten Mustercode 'Address Book' haben der Nutzer und der Provider die gleichen Sicherheitsanforderungen:
Alle diese Informationen werden mit der WS-Policy in der Sicherheitsrichtlinie erfasst. Richtlinien müssen zwischen WS-Sicherheit-Providern interoperabel sein. Die Richtlinie, die Sie erstellen, entspricht der standardmäßigen WS-Sicherheitsrichtlinie in WebSphere Application Server. Dadurch können Sie den Provider und den Nutzer für den Broker gegen den Provider und Nutzer für WebSphere Application Server austauschen, nachdem Sie die WS-Sicherheit hinzugefügt haben.
Die Implementierung dieser Richtlinie wird in der Sicherheitsbindung erfasst. Bindungen gelten speziell für den WS-Sicherheit-Provider; wenn Sie in der Lage sein wollen, mit WebSphere Application Server zu interagieren, müssen Sie eine WebSphere Application Server-Bindung für die Richtlinie für den Nutzer und Provider von WebSphere Application Server erstellen. Der erweiterte Mustercode 'Address Book' zeigt, wie die Richtlinie und die Bindungen für den Broker innerhalb der Workbench erstellt werden.
Für eine effektive Interoperabilität von Nutzer und Provider wird die Sicherheitsrichtlinie gemeinsam genutzt und es werden dieselbe Verschlüsselung und Signierung von abgehenden und eingehenden Nachrichten angewendet. Die Bindungen für den Nutzer und den Provider sind unterschiedlich, weil ihre Perspektiven sich unterscheiden, und es werden unterschiedliche Schlüssel für Verschlüsselung und Signierung verwendet. Beispielsweise ist für den Provider die Anforderungsnachricht die eingehende Nachricht, aber für den Nutzer ist sie die ausgehende Nachricht.
Um den Mustercode zu verstehen, müssen Sie über Grundkenntnisse der Public-Key-Verschlüsselung verfügen (siehe Public-Key-Verschlüsselung). Der Mustercode verwendet zwei X.509-Public-Key-Zertifikate: einen öffentlichen Schlüssel und einen privaten Schlüssel. Wenn Daten mit einem Schlüssel verschlüsselt werden, ist die Entschlüsselung nur mit dem anderen Schlüssel möglich. Um eine Nachricht für jemanden zu verschlüsseln, müssen Sie den entsprechenden öffentlichen Schlüssel verwenden; nur diese Person kann sie mit ihrem privaten Schlüssel entschlüsseln. Um eine Nachricht zu signieren, müssen Sie sie mit Ihrem privaten Schlüssel verschlüsseln; jeder kann sie mithilfe Ihres öffentlichen Schlüssels entschlüsseln. Sie können Ihren öffentlichen Schlüssel jedem geben, mit dem Sie kommunizieren möchten. Ihr privater Schlüssel muss geheim bleiben.
Einzelheiten zum Signieren und Verschlüsseln bestimmter Teile der Nachricht werden im vorhergehenden Abschnitt über Sicherheitsrichtlinien und Bindungen beschrieben. Im folgenden Diagramm ist zu sehen, dass die gesamte SOAP-Nachricht verschlüsselt und signiert wird. Im Diagramm werden die Schlüssel gezeigt, auf die der Nutzer und der Provider in ihren Schlüsselspeichern Zugriff haben, sowie die Schlüssel, die sie zur Verschlüsselung und Signierung verwenden.
Der Nutzer hat Zugriff auf den eigenen öffentlichen Schlüssel (Cpub), den eigenen privaten Schlüssel (Cpriv) und den öffentlichen Schlüssel des Providers (Ppub). Der Provider hat Zugriff auf den eigenen privaten Schlüssel (Ppriv), den eigenen öffentlichen Schlüssel (Ppub) und den öffentlichen Schlüssel des Nutzers (Cpub).
Der Nutzer signiert die Nachricht mit dem eigenen privaten Schlüssel (Cpriv) und verschlüsselt die Nachricht mit dem öffentlichen Schlüssel des Providers (Ppub). Der Provider entschlüsselt die Nachricht mit dem eigenen privaten Schlüssel (Ppriv) und bestätigt die Signatur mit dem öffentlichen Schlüssel des Nutzers (Cpub).
Beim Erstellen der Antwort signiert der Provider die Nachricht mit dem eigenen privaten Schlüssel (Ppriv) und verschlüsselt die Nachricht mit dem öffentlichen Schlüssel des Nutzers (Cpub). Der Nutzer entschlüsselt die Nachricht mit dem eigenen privaten Schlüssel (Cpriv) und bestätigt die Signierung mit dem öffentlichen Schlüssel des Providers (Ppub).
Details dazu, welcher Schlüssel verwendet werden soll, sowie die Reihenfolge, in welcher der Nutzer und der Provider verschlüsseln und entschlüsseln müssen, sind in den Sicherheitsbindungen enthalten. Sie erstellen zwei Sicherheitsbindungen in den Konfigurationsabschnitten: eine für den Nutzer und eine für den Provider; siehe Mustercode 'Address Book' für die Verwendung von HTTP konfigurieren oder Mustercode 'Address Book' für JMS-Transport konfigurieren. Verwenden Sie das vorige Diagramm als Referenz.