Der Mustercode 'Security Identity Propagation' veranschaulicht die Verwendung einiger Funktionen des WebSphere Message Broker für die Identitätssicherheit.
Da für eine richtige Sicherheitsimplementierung ein externer zentraler Provider erforderlich ist, der Identitäten und Berechtigungen definiert, wird mit diesem Mustercode keine aktive Sicherheit implementiert. Der vordefinierte Mustercode zeigt auch, wie Sie die Sicherheitsberechtigungsnachweise aus Nachrichten in MQInput- und HTTPInput-Knoten extrahieren und mithilfe von ESQL bearbeiten, melden und (optional) zuordnen können. Außerdem wird verdeutlicht, wie die Identität über den MQOutput- und den HTTPRequest-Knoten weitergegeben wird.
Im Abschnitt zur Erweiterung des Mustercodes finden Sie Einzelheiten zur Integration eines externen Sicherheitsproviders in den Mustercode.
Der Mustercode 'Security Identity Propagation' veranschaulicht Folgendes:
In der folgenden Abbildung ist der Hauptnachrichtenfluss SecurityIdentitySampleFlow.msgflow des Mustercodes 'Security Propagation Sample' im Nachrichtenbrokerprojekt 'SecurityIdentitySampleFlowProject' dargestellt. Der Nachrichtenfluss besteht aus einem HTTPInput-Knoten und zwei MQInput-Knoten, die einen gemeinsamen untergeordneten Nachrichtenfluss aufrufen.
Der HTTPInput-Knoten HTTP_ID extrahiert die im Header der HTTP-Basisauthentifizierung weitergegebene Identität, die sich aus einem Benutzernamen- und Kennworttoken aus ankommenden Anforderungen zusammensetzt. Der HTTPInput-Knoten ist in der bereitgestellten Brokerarchivdatei SecurityIdentityPropagation.bar mit einem auf 'Standardweitergabe' gesetzten Sicherheitsprofil konfiguriert.
Der MQInput-Knoten 'MQ_ID' extrahiert die Identität, die lediglich aus einem Benutzernamen besteht und im WebSphere MQ-MQMD-Nachrichtenheader der ankommenden Nachricht weitergegeben wird. Der Knoten MQ_ID ist in der bereitgestellten Brokerarchivdatei SecurityIdentityPropagation.bar mit einem auf 'Standardweitergabe' gesetzten Sicherheitsprofil konfiguriert.
Der MQInput-Knoten 'MSG_ID' extrahiert eine Gruppe von Identitätsberechtigungsnachweisen, die aus Benutzername und Kennwort bestehen. Die sicherheitsspezifischen Eigenschaften im Knoten MSG_ID sind so konfiguriert, dass die Identitätsberechtigungsnachweise im Hauptteil der WebSphere MQ-Nachricht weitergegeben werden. Der Knoten MSG_ID ist in der bereitgestellten Brokerarchivdatei SecurityIdentityPropagation.bar mit einem auf 'Standardweitergabe' gesetzten Sicherheitsprofil konfiguriert.
In der folgenden Abbildung ist der untergeordnete Nachrichtenfluss SecurityIdentitySubFlow.msgflow des Mustercodes 'Security Identity Propagation' dargestellt, der von den einzelnen Empfangsknoten aufgerufen wird.
Der untergeordnete Nachrichtenfluss enthält den Rechenknoten 'MapIdentity', der im Eigenschaftenordner der Nachricht die zugeordnete Identität setzen kann, wenn dies vom Inhalt der Eingabenachricht gefordert wird. Der HTTPRequest-Knoten 'HTTP_ReqAsID' gibt entweder anhand der Quelle oder anhand der zugeordneten Identität eine Anforderung an den Nachrichtenfluss 'SecurityIdentityReportFlow' aus. Dieser Knoten ersetzt die Nachrichtenbaumstruktur durch die Antwort, die er von diesem Nachrichtenfluss erhält. Der HTTP-Anforderungsknoten gibt die Quelle der zugeordneten Identität weiter, da die Eigenschaft 'Sicherheitsprofil' dieses Knotens in der bereitgestellten BAR-Datei SecurityIdentityPropagation.bar auf 'Standardweitergabe' gesetzt ist. Der letzte Knoten im Fluss, der Rechenknoten 'ClearHdrs', löscht den HTTP-Anforderungsheader, wenn der Hauptnachrichtenfluss eine Antwortnachricht über WebSphere MQ sendet.
In der folgenden Abbildung ist der Nachrichtenfluss SecurityIdentityReportFlow.msgflow dargestellt, der vom untergeordneten Nachrichtenfluss aufgerufen wird. Dieser Nachrichtenfluss gibt die relevante Identität weiter.
Der Rechenknoten 'Report Identity' im Nachrichtenfluss 'SecurityIdentityReportFlow' meldet die empfangene Identität in den Hauptteilelementfeldern der Nachricht, wenn der Hauptteilordner vorhanden ist.
Zur Ausführung des Mustercodes 'Security Propagation' stehen drei Eingabenachrichten zur Verfügung:
<?xml version="1.0" encoding="UTF-8"?> <Envelope> <Body> </Body> </Envelope>See Simple.xml, Security_Identity_MQ_ID.mbtest
<?xml version="1.0" encoding="UTF-8"?> <Envelope> <Body> <MessageIdentity> <Username>IdInMsg</Username> <Password>PwdInMsg</Password> <IssuedBy>InMsgIssuer</IssuedBy> </MessageIdentity> </Body> </Envelope>Siehe Security_Identity_MSG_ID.mbtest
<?xml version="1.0" encoding="UTF-8"?> <Envelope> <Body> <MapIdentity>true</MapIdentity> </Body> </Envelope>Siehe Security_Identity_Mapped.mbtest