Transaktionstoken
Transaktions-Token sind spezielle, zeitlich begrenzte OAuth 2.0 Token, die eine sichere Autorisierung für die Kommunikation zwischen Diensten innerhalb einer Vertrauensdomäne gewährleisten sollen. Basierend auf dem IETF-Spezifikationsentwurf ( draft-ietf-oauth-transaction-tokens ) handelt es sich bei diesen Tokens um signierte JWTs, die unveränderliche Kontext- und Autorisierungsinformationen für bestimmte Transaktionen enthalten.
Über Transaktions-Token
tctxUnveränderlicher Transaktionskontext : Der Anspruch (Transaktionskontext) enthält transaktionsspezifische Informationen, die während der gesamten Aufrufkette nicht verändert werden können, wodurch eine Manipulation der Parameter verhindert wird.- Lückenlose Rückverfolgbarkeit : Jedes Transaktionstoken enthält eine eindeutige Transaktionskennung (
txnClaim), die eine lückenlose Rückverfolgung über alle an der Bearbeitung einer Anfrage beteiligten Dienste hinweg ermöglicht. - Workload-Autorisierung : Der
req_wlClaim „(anfordernder Workload)“ enthält eine Kette aller Workloads, die die Transaktion bearbeitet haben, und ermöglicht so präzise Autorisierungsentscheidungen auf der Grundlage des Aufrufpfads. - Kontexterhaltung : Wenn ein Transaktionstoken bei nachfolgenden Tokenaustauschen (Ersatztoken) als Subjekt-Token verwendet wird, bleiben der Transaktionskontext und die Kennung erhalten, wodurch die Konsistenz über den gesamten Workflow hinweg gewährleistet wird.
Konfigurieren des Transaktionstokens in IBM Verify
- Für STS-Kunden
- Rufen Sie die Admin-Konsole auf und wählen Sie “. Klicken Sie auf „STS-Client hinzufügen “.
- Wählen Sie im Schritt „Einstellungen für den Token-Austausch“ im Dropdown-Menü „Angeforderter Token “ die Option „Transaktionstoken“ aus.Hinweis: Transaktionstoken können je nach Anwendungsfall auch als Subjekt- oder Akteurstoken konfiguriert werden.
- Im Schritt „Einstellungen für das angeforderte Token“ finden Sie eine Option zur Konfiguration des Transaktionskontexts. Dieses Feld akzeptiert einen CELx-Ausdruck, dessen Ausgabe direkt auf den
tctxAnspruch im resultierenden Transaktionstoken abgebildet wird. Der Ausdruck muss zu einem gültigen JSON-Objekt ausgewertet werden. Beispiel:{ "amount": "100.00", "currency": "USD", "merchant_id": "requestContext.subject_token.email" }Hinweis: Das Feld „Transaktionskontext“ ist nur sichtbar, wenn das Feld „Angefordertes Token“ auf „Transaktionstoken“ gesetzt ist. Dieses Feld ist für andere Token-Typen nicht relevant. - Konfigurieren Sie die übrigen erforderlichen Eigenschaften und klicken Sie auf „Speichern“, um den STS-Client anzulegen.
- Für Bewerbungen
- Rufen Sie die Admin-Konsole auf und wählen Sie “. Klicken Sie auf „Anwendung hinzufügen“ und wählen Sie eine der Anwendungen im Zusammenhang mit „ OpenID Connect“ aus.
- Wechseln Sie auf die Registerkarte „Anmeldung“ und navigieren Sie zum Abschnitt „Token-Austausch “. Wählen Sie im Dropdown-Menü unter „Angefordertes Token“ die Option „Transaktionstoken“ aus.Hinweis: Transaktionstoken können je nach Anwendungsfall auch als Subjekt- oder Akteurstoken konfiguriert werden.
- Konfigurieren Sie den Transaktionskontext als CELx-Ausdruck, dessen Auswertungsergebnis ein gültiges JSON-Objekt ist. Dies wird direkt dem
tctxAnspruch im resultierenden Transaktionstoken zugeordnet.Hinweis: Das Feld „Transaktionskontext“ ist nur sichtbar, wenn das Feld „Angefordertes Token“ auf „Transaktionstoken“ gesetzt ist. Dieses Feld ist für andere Token-Typen nicht relevant. - Konfigurieren Sie die übrigen erforderlichen Eigenschaften und klicken Sie auf „Speichern“, um die Anwendung zu erstellen.
Zuordnung des Transaktionskontexts
Ein charakteristisches Merkmal von Transaktionstoken ist der tctx Claim „(Transaktionskontext)“ – ein unveränderlicher Claim, der den Kontext der gerade durchgeführten Transaktion definiert. Wird ein Transaktionstoken in einem nachfolgenden Token-Austauschablauf als Subjekt-Token verwendet, behält das daraus resultierende Token denselben tctx Anspruch bei, wodurch eine lückenlose Rückverfolgbarkeit über den gesamten Lebenszyklus der Transaktion hinweg gewährleistet ist.
Logik zur Generierung des Transaktionskontexts
tctx Anspruch auf ein Transaktionstoken anhand der folgenden Prioritätsregeln:- Definition des CELx-Ausdrucks : Wenn ein CELx-Ausdruck im Transaktionskontext konfiguriert ist (wie in Schritt 4 beschrieben), wird der Ausdruck ausgewertet und sein Ergebnis als Anspruch
tctxverwendet. - Angaben zur Anfrage : Wenn keine CELx-Ausdrucksform konfiguriert ist und die Anfrage zum Tokenaustausch einen
request_detailsParameter enthält, wird der Wert vonrequest_detailsals Claimtctxverwendet. - Kein Kontext verfügbar : Wenn weder ein CELx-Ausdruck noch
request_detailsangegeben wird, wird dertctxClaim aus dem Transaktions-Token weggelassen.
Beispiele für die CELx-Ausgabe
- Szenario 1: Definition eines vollständigen Transaktionskontexts
- In diesem Beispiel wird eine vollständige JSON-Nutzlast für den tctx-Claim definiert. Die Token-Angaben zu Subjekt und Akteur sind in CELx unter den Bezeichnungen „ requestContext.subjectToken “ bzw. „ requestContext.actorToken “ verfügbar:
{ "amount": "100.00", "currency": "USD", "merchant_id": "requestContext.subject_token.email" } - Szenario 2: Ergänzung der Anfragedetails durch Laufzeittwerte
- Der
request_detailsParameter aus der Token-Austausch-Anfrage ist in CELx-Ausdrücken alsrequestContext.tctx. verfügbar. Sie können diesen Kontext erweitern, indem Sie zur Laufzeit berechnete Werte hinzufügen:
Eine vollständige Dokumentation zur CELx-Syntax finden Sie im Leitfaden zu den Attributfunktionen.requestContext.tctx.put("requestingUserName", user.userName)