Transformationen
Wenn Sie Webhooks in IBM® Verify anwenden, müssen Sie sich an ferne Systeme wenden, die nicht immer vom Tenantadministrator erstellt und implementiert werden. Da diese fernen Systeme möglicherweise starre APIs bereitstellen, kann es erforderlich sein, dass die Anforderungs- oder Antwortnutzdaten eines Webhook-Aufrufs mutiert werden, um eine funktionierende Integration zwischen Verify und dem fernen System zu erreichen.
Um diese Integration zu erreichen, stellen Webhooks eine Funktion bereit, die als Transformationen bezeichnet wird. Administratoren können diese Funktion verwenden, um Ausdrücke zu verfassen, die die HTTP-Anforderung und -Antwort verändern.
Eine Webhook-Transformation ist ein CEL-Ausdruck, dessen Ausgabe eine Zuordnung ist, die bekannte Schlüssel enthält. Diese Schlüssel werden den Teilen zugeordnet, aus denen eine HTTP-Anforderung oder -Antwort besteht. Jeder Schlüssel in der Transformationsausgabe ist optional. Wenn er nicht angegeben wird, wird dieser Teil der Anforderung oder Antwort nicht geändert.
Abgehende Transformationen
Abgehende Transformationen gelten für die HTTP-Anforderung, bevor sie an das Webhook-Ziel gesendet wird.
| Ihren Namen | Typ | Schreibgeschützt | Anmerkungen |
|---|---|---|---|
body |
map[string]object |
N | |
header |
map[string]list[string] |
N | |
method |
string |
N | |
path |
string |
N | |
host |
string |
Y | Nur vorhanden, wenn der Host in allen konfigurierten URLs konsistent ist. |
CEL-Spezifikation referenziert werden.CEL ist eine Zuordnung, die wie im folgenden Beispiel mit bekannten Schlüsseln deklariert wird.{
"body":body,
"header":header,
"path":path
}| Ihren Namen | Typ | Anmerkungen |
|---|---|---|
body |
map[string]object oder string |
|
header |
map[string]list[string] oder map[string]string |
|
method |
string |
|
path |
string |
|
query |
map[string]string oder map[string]list[string] |
|
skip_authentication |
boolean |
Bei Angabe von "true" wird das konfigurierte Authentifizierungsverfahren nicht verwendet. Verwenden Sie diesen Schlüssel für Situationen, in denen die Transformation der Anforderung Berechtigungsdetails hinzufügt. |
title_case_bearer |
boolean |
Verwenden Sie diese Transformation in Fällen, in denen die empfangende API Großschreibung erwartet, um den Header korrekt zu verarbeiten. trueWenn diese Option aktiviert ist, wird der Autorisierungstyp-Bezeichner bearer im authorization Header, sofern vorhanden, in Groß-/Kleinschreibung umgewandelt (bearer -> Bearer). |
Eingehende Transformationen
Eingehende Transformationen gelten für die HTTP-Antwort, wenn sie vom gestarteten Webhook empfangen wird.
| Ihren Namen | Typ | Schreibgeschützt | Anmerkungen |
|---|---|---|---|
body |
map[string]object |
N | |
header |
map[string]list[string] |
Y | |
status_code |
integer |
Y | |
request |
map[string]object |
Y | Enthält die Argumente für die Ausgangstransformation. Beispielsweise, request.body um auf den ursprünglichen Anfragetext zuzugreifen. |
- Nur der Hauptteil einer eingehenden Transformation kann geändert werden. Änderungen an
headeroderstatus_codehaben keine Auswirkungen. - Eingehende Umsetzungen werden erst gestartet, nachdem der Statuscode geprüft wurde. Stellen Sie sicher, dass das Feld
expectedStatusdes Webhooks oder der Ressource entsprechend festgelegt ist.
Allgemeine Fehler in Transformationen
- Anzahl der fehlgeschlagenen Gleichheiten
- Wenn ein Vergleich für eine Zahl durchgeführt wird, die aus dem HTTP-Hauptteil stammt, funktioniert eine Gleichheitsüberprüfung möglicherweise nicht wie erwartet für eine Zahl. Der folgende Code ist ein Beispiel für Nutzdaten, die auf sie angewendete
CELund die Ausgabe.body argument value:{ "value": 2 }CEL:{ "body" : body.put("gte": body.value >= 2) }Result:{ "value":2, "gte": false }Dies liegt daran, dass der Ausdruck
body.valueeinen Dezimalwert ergibt. Als JSON sind Zahlen per Definition keine Ganzzahlen. Eine Umsetzung korrigiert das Verhalten. Siehe folgendes Beispiel.Incoming body:{ "value": 2 }CEL:{ "body" : body.put("gte": int(body.value) >= 2) }Result:{ "value":2, "gte": true } - Entfernen des Textkörpers aus einer Anfrage
- Bei einigen APIs ist es unter Umständen erforderlich, dass alle Informationen im ` URL ` und in den Headern übermittelt werden und dass die Anfrage keinen Hauptteil enthält. Bei diesen APIs ist möglicherweise eine Transformation erforderlich, um den ausgehenden „ HTTP “-Body aus der Anfrage zu entfernen. Um den Textkörper aus der ausgehenden Anfrage zu entfernen, führen Sie die folgenden Schritte aus.
- Setze den Content-Type auf eine leere Zeichenfolge.
- Setzen Sie den Wert von „ HTTP “ auf eine leere Zeichenfolge.
Das folgende Beispiel zeigt, wie man den Textkörper im Rahmen einer ausgehenden Transformation entfernt:
CEL:{ "body":"", "header": header.put("content-type","") }