Attributfunktionen
Sie können die Konfigurations-API-Beispiele und -Syntax zum Erstellen angepasster Funktionen verwenden.
Übersicht
Verwenden Sie Funktionen, um Attributwerte zu referenzieren, umzusetzen und zu kombinieren, bevor sie als SSO-Authentifizierungstoken oder bei der Bereitstellung von Accounts an eine Anwendung übergeben werden. Funktionen können auf die Anmeldedaten der Identitätsquelle zugreifen, die zur Authentifizierung verwendet werden, IBM® Verify sowie auf das Benutzerobjekt (im SCIM-Format), das in Cloud Directory gespeichert ist, und auf beliebige externe API-Endpunkte. Beispielsweise kann ein Attribut mit dem NamenformalDisplayName als Attribut mit einem festen Wert erstellt werden, und es kann eine Funktion angegeben werden, die user.name.givenName und user.name.familyName auf eine bestimmte Weise verknüpft.Um erweiterte Regelattribute zu konfigurieren, navigieren Sie in der Admin-Konsole zu “. Ordnen Sie diese Attribute dann in der Anwendungskonfiguration zu, ähnlich wie bei der Zuordnung aller anderen Attributtypen.
Domänenobjekte
Der Begriff 'Domänenobjekte' ist ein Sammelbegriff, der alle möglichen Objekte umfasst, auf die in der angepassten Funktion eines Attributs zugegriffen werden kann.
- Cloud Directory-Benutzer
Für jeden Benutzer, der sich anmeldet, Verify wird ein Benutzerkonto im Cloud Directory angelegt. Dieser Account wird als SCIM-Objekt dargestellt. In den folgenden Beispielen wird der folgende Cloud Directory-Benutzeraccount verwendet.
Das folgende SCIM-Objekt ist der Benutzeraccount.{ "id": "600000A3DD", "userName": "google-oauth2|1033116550041553242@jke.samlfed.com", "emails": [ { "type": "work", "value": "jessica@jke.com" } ], "meta": { "created": "2019-04-26T09:21:35Z", "location": "https://jke.cloudidentity.com/v2.0/Users/600000A3DD", "lastModified": "2019-04-26T09:21:35Z", "resourceType": "User" }, "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User", "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User", "urn:ietf:params:scim:schemas:extension:ibm:2.0:User" ], "name": { "formatted": "Jessica Hill", "familyName": "Hill", "givenName": "Jessica" }, "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": { "manager": { "value": "6030101TP6" } }, "urn:ietf:params:scim:schemas:extension:ibm:2.0:User": { "userCategory": "federated", "twoFactorAuthentication": false, "realm": "jke.samlfed.com", "unqualifiedUserName": "google-oauth2|1033116550041553242", "customAttributes": [ { "name": "car", "values": [ "Ford Mustang Mach-E", "Maruti Suzuki 800" ] }, { "name": "hobbies", "values": [ "Reading", "Running", "Gaming", "Star Wars" ] } ] }, "active": true }Hinweis: Im SCIM-Objekt sind zwei benutzerdefinierte Attribute definiert –carundhobbies. Diese Attribute sind Schemaerweiterungen, die über die Verwaltungskonsole konfiguriert werden können. Über die Verify Users-API können dem Benutzerobjekt Werte hinzugefügt werden.Syntax Beschreibung Beispiele user.$propertyZugriff auf $property. Sowohl .als auch[".."]kann verwendet werden.user.name.familyName + ", " + user.name["givenName"]Ergebnis:
Hill, Jessicauser.$values.filter(x, $condition)$values: Eine Liste. Von der Funktion filterwerden Werte basierend auf$conditionextrahiert.user.emails.filter(x, x.type == "work")[0].valueErgebnis:
jessica@jke.comuser.getCustomValues($attrName)Funktion zum Abrufen benutzerdefinierter Attributwerte als Liste. $attrName: Der Name des Attributs im Benutzerobjekt gibt „null“ zurück, wenn das Attribut nicht vorhanden ist.user.getCustomValues("car")Ergebnis:
["Ford Mustang Mach-E","Maruti Suzuki 800"]user.getCustomValue($attrName)Funktion zum Abrufen des ersten Werts eines benutzerdefinierten Attributs in der Liste. $attrName: Der Name des Attributs im Benutzerobjekt. Gibt eine leere Zeichenkette („“) zurück, wenn das Attribut nicht vorhanden ist.user.getCustomValue("hobbies")Ergebnis:
Readinguser.getManager()Funktion zum Abrufen der Vorgesetzteninformationen des aktuellen Benutzers. Die Funktion gibt den Benutzeraccount des Managers (als SCIM-Objekt) zurück. Wenn für den Benutzer kein Manager angegeben ist, wird ein leeres JSON-Objekt zurückgegeben. Wird ein Manager-Objekt zurückgegeben, kann es wie das Benutzerobjekt verwendet werden, d. h., die verschiedenen Funktionen können auf dieses Objekt angewendet werden. user.getManager().name.formattedErgebnis:
Jacob Jonesuser.getRoles()Funktion zum Abrufen der Berechtigungen des aktuellen Benutzers. Die Funktion gibt die Liste der Berechtigungen des Benutzers als JSON-Objekt zurück. Wenn die Liste der Berechtigungen zurückgegeben wird, kann sie als JSON-Objekt verwendet werden. user.getRoles().resources[0].nameErgebnis:
Basic accessuser.getFIDO2Registrations($search)Funktion zum Abrufen der Registrierungen unter FIDO2 des aktuellen Benutzers. Die Funktion gibt die Liste der Registrierungen auf FIDO2 zurück, die zu dem Benutzer gehören. Suchparameter $searchkönnen optional angegeben werden. Die unterstützten Suchparameter finden Sie hier: https://docs.verify.ibm.com/verify/reference/getfidoregistrations_v20user.getFIDO2Registrations("enabled=true").fido2[0].enabledErgebnis:
trueuser.getFIDO2RegistrationByID($id)Funktion zum Abrufen der Registrierung unter FIDO2 des aktuellen Benutzers mit der ID $id.user.getFIDO2RegistrationByID("e8bf1dac-8245-452b-b7c4-8a700a1eb078").fido2[0].idErgebnis:
e8bf1dac-8245-452b-b7c4-8a700a1eb078user.getDynamicGroups()Funktion zum Abrufen der dynamischen Gruppen des aktuellen Benutzers. Die Funktion gibt die Liste der dynamischen Gruppen des Benutzers als JSON-Objekt zurück. user.getDynamicGroups().resources[0].nameErgebnis :
Security department manager- Funktionen zur Benutzerverwaltung
Die folgenden Funktionen stehen in CELx zur Verfügung, falls Lese-, Erstellungs- und Aktualisierungsvorgänge für Benutzer im Cloud-Verzeichnis durchgeführt werden müssen.
Der Rückgabewert dieser Funktionen ist ein Map-Objekt, wie unten definiert. Dies ermöglicht eine flexible Fehlerbehandlung in der CELx-Funktion. Eine leere Zeichenfolge fürerrorbedeutet, dass der Vorgang erfolgreich war.{ "result": <result of the operation>, "error": <error message, in case of failures> }Syntax Beschreibung Beispiele findUsers($filter)Die Funktion gibt eine Liste der Benutzer zurück, die dem angegebenen Filter entsprechen. $filter: Zeichenfolge, die die Suchkriterien in dem in der GET-Users-API definierten Format festlegt. Für die Suchantwort gilt eine Obergrenze von 10 Benutzern.Wird kein passender Benutzer gefunden, wird eine leere Liste zurückgegeben.
findUsers('emails ew "@jke.com"')findUsers($filter, $attributes)Die Funktion gibt eine Liste der Benutzer zurück, die dem angegebenen Filter entsprechen. Jeder gefundene Nutzer gibt die Attribute zurück, die im $attributesArgument angegeben sind.$filter: Die Zeichenfolge, die die Suchkriterien definiert.$attributes: Das String-Array von „ scimNames “, das im Ergebnis zurückgegeben werden soll.Beachten Sie das Format der Abfrageparameter, das in der GET-Users-API definiert ist. Für die Suchantwort gilt eine Obergrenze von 10 Benutzern.
Wird kein passender Benutzer gefunden, wird eine leere Liste zurückgegeben.
findUsers('emails ew "@jke.com"', ["emails", "name.givenName"])findUsers($filter, $attributes, $count)Die Funktion gibt eine Liste der Benutzer zurück, die dem angegebenen Filter entsprechen, wobei die maximale Anzahl auf $count begrenzt ist. Jeder gefundene Nutzer gibt nur die Attribute zurück, die im $attributesArgument angegeben sind.$filter: Die Zeichenfolge, die die Suchkriterien definiert.$attributes: Ein String-Array mit „ scimNames “, das im Ergebnis zurückgegeben werden soll.$count: Ganzzahl zur Angabe der maximalen Anzahl der zurückzugebenden Benutzer, maximal 10. Jeder Wert über 10 wird ignoriert und auf 10 gesetzt. Beachten Sie das Format der Abfrageparameter, das in der GET-Users-API definiert ist.Wird kein passender Benutzer gefunden, wird eine leere Liste zurückgegeben.
findUsers('emails ew "@jke.com"', ["emails", "name.givenName"], 3)findUser($filter)Die Funktion gibt einen einzelnen Benutzer zurück, der dem angegebenen Filter entspricht. $filter: Die Zeichenfolge, die die Suchkriterien in dem in der GET-Users-API definierten Format festlegt.Es wird ein Fehler zurückgegeben, wenn entweder mehrere Benutzer gefunden wurden oder kein Benutzer gefunden wurde.
findUser('emails eq "jessica@jke.com"')findUser($filter, $attributes)Die Funktion gibt einen einzelnen Benutzer zurück, der dem angegebenen Filter entspricht. Der Benutzer gibt nur die Attribute zurück, die im $attributesArgument angegeben sind.$filter: Zeichenfolge, die die Suchkriterien definiert.$attributes: Ein String-Array mit den „ scimNames “, die im Ergebnis zurückgegeben werden sollen. Beachten Sie das Format der Abfrageparameter, das in der GET-Users-API definiert ist.Es wird ein Fehler zurückgegeben, wenn entweder mehrere Benutzer gefunden wurden oder kein Benutzer gefunden wurde.
findUser('emails eq "jessica@jke.com"', ["emails", "name.givenName"])getUser($uid)Die Funktion gibt den Benutzer zurück, der mit dem angegebenen $uid... verknüpft ist. Es wird ein Fehler zurückgegeben, wenn der Benutzer nicht existiert.getUser("504K8664N6")createUser($m)Die Funktion erstellt einen Benutzer mit den angegebenen Attributwerten. $m: Eine Zuordnung von Attribut-ID/Name und dem vom Benutzer gewünschten Wert.Die Attribut-IDs sind in der Antwort der GET-Attributes-API zu finden. Die ID und der Name des Attributs können synonym verwendet werden.
Die
emailAttributwerte undusernamesind obligatorisch. Die übrigen Werte sind optional.Um das Passwort des neuen Benutzers festzulegen, fügen Sie in $m eine Eigenschaft mit dem Namen
passwordund dem Passwort im Klartext als Wert ein.resultBei Erfolg wird das erstellte SCIM-Benutzerobjekt zurückgegeben.createUser({'3':'jessica@jke.com', 'userName':'Jessica', '3f31edcf-19e8-46a4-b87e-e50c25dc1358':'Manager', 'hobbies':['Reading', 'Swimming'], '6': 'Jessica', '7': 'Doe'})createUser($m, $opts)Die Funktion erstellt einen Benutzer mit den angegebenen Attributwerten und zusätzlichen Optionen. $m: Eine Zuordnung von Attribut-ID/Name und dem vom Benutzer gewünschten Wert.$opts: Eine Übersicht über weitere Optionen, die bei der Erstellung eines Benutzers angegeben werden können.Die Attribut-IDs sind in der Antwort der GET-Attributes-API zu finden. Die ID und der Name des Attributs können synonym verwendet werden.
Die
emailAttributwerte undusernamesind obligatorisch. Die übrigen Werte sind optional. Um das Passwort des neuen Benutzers festzulegen, fügen Sie eine Eigenschaft mit$mdem Namenpasswordund dem Passwort im Klartext als Wert hinzu.Die folgenden Eigenschaften sind derzeit in $opts zulässig:
- notifyType : Diese Eigenschaft gibt den Typ der Benachrichtigung an, die an den Benutzer gesendet werden soll. Standardmäßig ist
EMAIL. - notifyPassword : Ein boolescher Wert, der angibt, ob das Passwort des Benutzers in der Benachrichtigung enthalten ist, die an den Benutzer gesendet wird. Standardmäßig ist
true.NONEDieses Attribut gilt nicht, wennnotifyTypeauf gesetzt ist. - notifyManager : Ein boolescher Wert, der angibt, ob der Vorgesetzte des Benutzers (sofern einer festgelegt ist) benachrichtigt werden soll, wenn das Passwort eines Benutzers festgelegt oder geändert wird. Der Standardwert lautet
false.NONEDieses Attribut gilt nicht, wennnotifyTypeauf gesetzt ist. - acceptInitialPassword : Wenn dieser Wert auf „true“ gesetzt ist, muss der Benutzer das Passwort bei der ersten Anmeldung nicht ändern.
resultBei Erfolg wird das erstellte SCIM-Benutzerobjekt zurückgegeben.createUser({'3':'jessica@jke.com', 'userName':'Jessica', '3f31edcf-19e8-46a4-b87e-e50c25dc1358':'Manager', 'hobbies':['Reading', 'Swimming'], '6': 'Jessica', '7': 'Doe'}, {'notifyType':'NONE', 'acceptInitialPassword': 'true'})updateUser($uid, $m)Die Funktion aktualisiert den angegebenen Benutzer mit den angegebenen Attributwerten.
$uid: Die ID des zu aktualisierenden Benutzers.$m: Eine Zuordnung von Attribut-ID/Name und dem vom Benutzer gewünschten Wert.Die Attribut-IDs sind in der Antwort der GET-Attributes-API zu finden. Die ID und der Name des Attributs können synonym verwendet werden.
Bei einer erfolgreichen Aktualisierung wird als Ergebnis eine Zeichenfolge zurückgegeben
success. Das Benutzerobjekt wird nicht zurückgegeben.updateUser('6050007SGF', {'3':'jessica@redbank.com', '3f31edcf-19e8-46a4-b87e-e50c25dc1358':'President', 'mobile_number': '502513585', 'work_country': 'Singapore'})- notifyType : Diese Eigenschaft gibt den Typ der Benachrichtigung an, die an den Benutzer gesendet werden soll. Standardmäßig ist
- Identitätsquellenberechtigungsnachweis
- VerifyWenn sich ein Benutzer bei anmeldet, werden die Anmeldeattribute der Identitätsquelle der Anmeldesitzung hinzugefügt und können in einer benutzerdefinierten Funktion abgerufen werden. Angenommen, der Benutzer meldet sich mit einem föderierten SAML-Identitätsprovider an und die SAML-Zusicherung enthält eine Attributanweisung mit dem Namen
userRoles, für diemarketingundhelpdeskfestgelegt ist.Das Attributidsuserist als Zuordnung mit einem Zeichenfolgeschlüssel und einem Zeichenfolgearraywert verfügbar. Beispiel:{ "userRoles": ["marketing", "helpdesk"], "displayName": ["Jessica J. Hill"], "phone": ["+12324321234"], "employeeId": "eid1234" }Syntax Beschreibung Beispiele idsuser.$propertyGreifen Sie auf $propertyzu. Der Wert inidsuserist immer ein Array aus Zeichenfolgen.idsuser.userRoles[1]Ergebnis:
helpdeskidsuser.getValue($property)Gibt den Wert von $propertyals Zeichenfolge zurück. Wenn der Wertebereich mehrere Einträge hat, wird der erste Eintrag zurückgegeben. Wenn$propertynicht vorhanden ist, wird eine leere Zeichenfolge zurückgegeben.idsuser.getValue('userRoles')Ergebnis:
"Marketing"idsuser.getValues($property)Gibt alle Werte von $propertyals Zeichenfolgearray zurück. Wenn$propertynicht vorhanden ist, wird einnil-Objekt zurückgegeben.idsuser.getValues('userRoles')Ergebnis:
["Marketing", "helpdesk]" - HTTP-Anforderungskontext
IBM VerifyWenn sich ein Benutzer bei anmeldet, kann in einer benutzerdefinierten Funktion auf den Kontext der eingehenden Anfrage „ HTTP “ zugegriffen werden. Wenn sich der Benutzer mit einem OAuth-Ablauf anmeldet und der Client Informationen zu
client-ipunduser-agentsendet, kannrequestContextdie Informationen extrahieren. Sie können an einen externen Endpunkt gesendet werden, um den Risikoscore für den Benutzer zu bestimmen.requestContextist als Zuordnung mit einem Zeichenfolgeschlüssel und einem Zeichenfolgearraywert verfügbar. Beispiel:{ "User-Agent": ["Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405"], "devicePlatform": ["MACOS"], "x-forwarded-for": ["116.15.12.181"] }Tabelle 1. HTTP Anforderungskontext Syntax Beschreibung Beispiel requestContext.$propertyGreifen Sie auf $propertyzu. Der Wert inrequestContextist immer ein Array aus Zeichenfolgen.requestContext.devicePlatform[1]Ergebnis:
MACOSrequestContext.getValue($property)Gibt den Wert von $propertyals Zeichenfolge zurück. Wenn der Wertebereich mehrere Einträge hat, wird der erste Eintrag zurückgegeben. Wenn$propertynicht vorhanden ist, wird eine leere Zeichenfolge zurückgegeben.requestContext.getValue('x-forwarded-for')Ergebnis:
116.15.12.181requestContext.getValues($property)Gibt alle Werte von $propertyals Zeichenfolgearray zurück. Wenn$propertynicht vorhanden ist, wird ein Nullobjekt zurückgegeben.requestContext.getValues('x-forwarded-for')Ergebnis:
["116.15.12.181"]- Attributkontext
- Das Kontextobjekt enthält Schlüssel/Wert-Paare bestimmter Eigenschaften des Attributs, die beim Schreiben von
Funktionen verwendet werden können. Die Werte dieser Eigenschaften sind nur im Kontext des Lookups dieses Attributs
gültig. Auf dieses Objekt kann mit dem Schlüssel
ctxzugegriffen werden.Die folgenden Eigenschaften sind für das Kontextobjekt verfügbar:Syntax Beschreibung Beispiele ctx.currentValueZugriff auf den ausgewerteten Attributwert vor der Ausführung dieser Funktion. Der Datentyp dieses Werts ist in der Attributkonfiguration angegeben. Wenn der Wert nicht in den Datentyp umgesetzt werden kann, wird dieser Wert auf null gesetzt. ctx.currentValue.toUpper
Standardoperatoren
+, -, *, /, >, <. + kann zum Verketten von Zeichenfolgen verwendet werden.| Bediener | Beschreibung | Beispiele |
|---|---|---|
== |
Gleich |
|
!= |
Ungleich |
|
|| |
Logisches Oder |
|
&& |
Logisches Und |
|
[ ] |
Zuordnungszugriff |
|
+ |
Verknüpfung und Hinzufügung (abhängig vom Typ) |
|
- |
Subtraktion |
|
* |
Multiplikation |
|
/ |
Geschäftsbereich |
|
> |
Größer als |
|
< |
Kleiner als |
|
>= |
Größer-gleich |
|
<= |
Kleiner-gleich |
|
? |
Ternärer IF-Operator |
|
Standardfunktionen
| Syntax | Beschreibung | Beispiele |
|---|---|---|
$string.contains($fragment) |
Prüft, ob $fragment in $string enthalten ist. |
Ergebnis: true |
$string.endsWith($fragment) |
Prüft, ob $string mit $fragment endet. |
Ergebnis: false |
$string.matches($regex) |
Prüft, ob $regex dem Muster in $string entspricht. |
Ergebnis: false |
$string.toUpper() |
Konvertiert $string in Großbuchstaben. |
Ergebnis: HELLO |
$string.toLower() |
Konvertiert $string in Kleinbuchstaben. |
Ergebnis: hello |
$string.base64Encode() |
Base64 codiert $string. |
Ergebnis: aGVsbG8= |
$string.base64Decode() |
Base64 decodiert $string. |
Ergebnis: hello |
$string.base64URLEncode() |
Base64URL kodiert $string. |
Ergebnis:
|
$string.base64URLDecode() |
Base64URL dekodiert $string. |
Ergebnis:
|
$string.size() |
Größe von $string |
Ergebnis: 5 |
$string.substring($begin,$end) |
Gibt die Zeichenfolge zwischen $begin index (including) und $end index (excluding) zurück. |
Ergebnis: ell |
$string.split($delim) |
Gibt das Array aus Zeichenfolgen zurück, die durch $delim geteilt werden. |
Ergebnis: ["h","llo"] |
$string.replaceAll($old,$new) |
Ersetzt alle Vorkommen von $old durch $new. |
Ergebnis: heppo |
$string.matchAndReplaceAll($regex, $newStr) |
Ersetzt alle Übereinstimmungen von $regex durch $newStr. |
Ergebnis: some-text |
$string.indexOf($str) |
$strGibt den Index des ersten Vorkommens von zurück. |
Ergebnis: 2 |
$string.lastIndexOf($str) |
Gibt den Index des letzten Vorkommens von $str. zurück. |
Ergebnis: 3 |
| Syntax | Beschreibung | Beispiele |
|---|---|---|
$values.size() |
Größe der Liste $values |
Ergebnis:
|
$values.filter(x, $condition) |
Filtert $values nach $condition. |
Ergebnis:
|
$values.all(x, $condition) |
Prüft, ob alle $values-Vorkommen $condition erfüllen. |
Ergebnis:
|
$values.exists(x, $condition) |
Prüft, ob ein Wert $condition entspricht. |
Ergebnis:
|
$values.exists_one(x, $condition) |
Prüft, ob genau ein Wert $condition entspricht. |
Ergebnis:
|
$values.map(x, $op) |
Führt $op für jeden Wert aus. |
Ergebnis:
|
stringToJson($s) |
Wandelt die Zeichenkette $s in ein JSON-Array um. |
Ergebnis:
|
jsonToString($json) |
Konvertieren Sie die Liste $json in eine Zeichenfolge. |
Ergebnis:
|
joinStrings($values, $s) |
Verknüpft die Zeichenfolgen in der Liste $values mit dem Trennzeichen $s. |
Ergebnis:
|
$values.flatten() |
Wandelt eine Liste von Listen $values in eine einzige Liste um. |
Ergebnis:
|
{
idsuser: {
"attr1":"value1",
"attr2":"value2"
}
}Für die Funktion idsuser.exists(x, $condition) ist x [ "attr1", "attr2" ].| Syntax | Beschreibung | Beispiele |
|---|---|---|
sha256($value) |
Berechnet den SHA256-Hashwert für die angegebene Zeichenfolge. Die Ausgabe ist eine Zeichenkette, die einen Hexadezimalwert darstellt. |
Ergebnis:
|
sha512($value) |
Berechnet den SHA512-Hashwert für die angegebene Zeichenfolge. Die Ausgabe ist eine Zeichenkette, die einen Hexadezimalwert darstellt. |
Ergebnis:
|
hmacSha1($value, $key) |
Berechnet den HMAC-SHA1-Wert mit dem Schlüssel $key für die angegebene Zeichenfolge. Die Ausgabe ist eine Zeichenkette, die einen Hexadezimalwert darstellt. |
Ergebnis: |
| Syntax | Beschreibung | Beispiele |
|---|---|---|
base64ToHex($value) |
Wandelt die Zeichenkette $value vom Typ „ base64-encoded “ in einen Hexadezimalwert um. |
Ergebnis:
|
hexToBase64($value) |
Wandelt den Hexadezimalwert $value in eine Zeichenkette vom Typ „ base64-encoded “ um. |
Ergebnis:
|
base64URLEncodedToHex($value) |
Wandelt die Zeichenkette $value vom Typ „ base64URL-encoded “ in einen Hexadezimalwert um. |
Ergebnis:
|
hexToBase64URLEncoded($value) |
Wandelt den Hexadezimalwert $value in eine Zeichenkette vom Typ „ base64URL-encoded “ um. |
Ergebnis:
|
| Syntax | Beschreibung | Beispiele |
|---|---|---|
has($m.$p) |
Prüfe, ob die Abbildung $m die Eigenschaft $p erfüllt. |
Ergebnis:
|
has($m, $p) |
Prüft, ob die Zuordnung $m die Eigenschaft $p enthält. Dies ist praktisch für Eigenschaftsnamen mit Sonderzeichen (zum Beispiel Punkten). |
Ergebnis:
|
jsonToString($m) |
Wandle die Karte $m in eine Zeichenkette um |
Ergebnis:
|
stringToJson($s) |
Wandelt die Zeichenkette $s in eine Map um. |
Ergebnis:
|
jsonToFormURLEncoded($m, $doUrlEncode) |
Konvertiert die Zuordnung $m in ein Formular. trueWenn $doUrlEncode auf gesetzt ist, wird das Formular nach dem Standard „ URL “ kodiert. |
Ergebnis:
|
$m.put($k, $v) |
Fügt den Schlüssel $k vom Typ „Zeichenkette“ mit dem Wert $v vom Typ „Objekt“ in die Map $m ein. $v$kWenn die Map $m zuvor einen Wert für den Schlüssel enthielt, wird der alte Wert durch den neuen Wert ersetzt. |
Ergebnis: "{"hello": "world", "key1": "value1"} |
$m.putAll($v) |
$mFügt den Inhalt der Karte $v in die Karte ein. $v$vWenn die Karte $m zuvor einen Wert für einen in der Karte vorhandenen Schlüssel enthielt, wird der alte Wert in der Karte $m durch den Wert in der Karte ersetzt. |
Ergebnis: "{"hello": "world", "key1": "value1", "test": true} |
$m.remove($k) |
Entfernt die Zuordnung für den Schlüssel $k vom Typ „Zeichenkette“ aus der Karte $m , sofern vorhanden. |
Ergebnis: {"hello": "world"} |
$m.removeAll($l) |
Entfernt alle Zuordnungen für die Liste der Schlüssel $l aus dem Map $m , sofern vorhanden. |
Ergebnis: {"hello": "world"} |
exists Funktion „List“.idsuser.exists(x, x == "ext:idsource_attr1")Sie gibt true zurück, wenn die Eigenschaft vorhanden ist, andernfalls false.| Syntax | Beschreibung | Beispiele |
|---|---|---|
now |
Gibt ein Zeitmarkenobjekt mit der aktuellen Uhrzeit zurück. |
Ergebnis: "2021-08-17T08:24:58Z" |
timestamp($s) |
Gibt ein Zeitstempelobjekt zurück, indem die Eingabezeichenfolge $s gemäß RFC3339 konvertiert wird. |
Ergebnis:
|
$t.getDate() |
Gibt den Tag des Monats aus der Zeitmarke $t als ganze Zahl mit einer auf eins basierenden Indexierung zurück. |
Ergebnis: 17 |
$t.getDayOfMonth() |
Gibt den Tag des Monats aus der Zeitmarke $t als ganzzahlige, nullbasierte Indexierung zurück. |
Ergebnis: 16 |
$t.getDayOfWeek() |
Gibt den Wochentag aus der Zeitmarke $t als ganze Zahl (nullbasiert) mit null für den Sonntag zurück. |
Ergebnis: 2 |
$t.getDayOfYear() |
Gibt den Tag des Jahres aus der Zeitmarke $t als ganzzahlige, nullbasierte Indexierung zurück. |
Ergebnis: 228 |
$t.getMonth() |
Gibt den Monat aus der Zeitmarke $t als ganzzahlige, nullbasierte Indexierung zurück. |
Ergebnis: 7 |
$t.getFullYear() |
Gibt das Jahr aus der Zeitmarke $t als ganze Zahl zurück. |
Ergebnis: 2021 |
$t.getHours() |
Gibt die Stunden des Zeitstempels $t als Ganzzahl zurück. |
Ergebnis: 8 |
$t.getMinutes() |
Gibt die Minuten aus der Zeitmarke $t als Ganzzahl zurück. |
Ergebnis: 24 |
$t.getSeconds() |
Gibt die Sekunden aus der Zeitmarke $t als ganze Zahl zurück. |
Ergebnis: 58 |
$t.getMilliseconds() |
Gibt die Millisekunden aus der Zeitmarke $t als ganze Zahl zurück. |
Ergebnis: 642 |
int($t) |
Wandelt den Zeitstempel in int64 Sekunden seit der UNIX®-Epoche um. |
Ergebnis: 1629188698 |
duration($d) |
Die Dauer $d muss als Zeichenfolge angegeben werden, die mit "s" endet und die Dauer in Sekunden angibt. |
Ergebnis: "2021-08-17T09:24:58Z" |
formatTime($t, $s) |
Gibt die Zeitmarke $t im Format $s zurück. Es $s muss die Referenzzeit „Montag, 02-January-06 15:04:05 MST“ in dem gewünschten Format verwendet werden. |
Ergebnis:
|
| Syntax | Beschreibung | Beispiele |
|---|---|---|
encodeURI($uri) |
Gibt eine Zeichenkette zurück, die die als URI kodierte, übergebene Zeichenkette $uri darstellt. Diese Methode führt eine Escape-Sequenz für alle Zeichen durch, mit Ausnahme von: A-Z a-z 0-9 ; , / ? : @ & = + $ - _ . ! ~ * ' ( ) #. |
Ergebnis: "test.html?name=J%C3%BCrgen&car=audi" |
decodeURI($uri) |
$uriGibt eine Zeichenkette zurück, die die dekodierte Version der kodierten URI darstellt. |
Ergebnis: "test.html%3Fname%3DJ%C3%BCrgen%26car%3Daudi" |
encodeURIComponent($uri) |
Gibt eine Zeichenkette zurück, die die angegebene Zeichenkette $uri als URI-Komponente kodiert darstellt. Diese Methode führt eine Escape-Sequenz für alle Zeichen durch, mit Ausnahme von: A-Z a-z 0-9 - _ . ! ~ * ' ( ). |
Ergebnis: "test.html%3Fname%3DJ%C3%BCrgen%26car%3Daudi" |
decodeURIComponent($uri) |
$uriGibt eine Zeichenkette zurück, die die dekodierte Version der kodierten URI-Komponente darstellt. |
Ergebnis: "test.html?name=Jürgen&car=audi" |
UUID-Funktionen
| Syntax | Beschreibung | Beispiele |
|---|---|---|
genUUID() |
Erzeugt eine UUID gemäß RFC 4122 und den DCE- 1.1: -Authentifizierungs- und Sicherheitsdiensten. |
Ergebnis: 4eb1a3f3-5461-4b91-8d69-69e25f2a1b6a |
Typ- und Konvertierungsfunktionen
| Syntax | Beschreibung | Beispiele |
|---|---|---|
type($value) |
Gibt den Typ von $value. zurück. |
Ergebnis:
Ergebnis: "string" |
bool($string) |
Wandelt die Zeichenkette $string in einen booleschen Wert um. "True"Die zulässigen Werte für true sind "true", und "TRUE".
|
Ergebnis: true
Ergebnis: false |
bytes($string) |
Wandelt die Zeichenkette $string in Bytes um. |
Ergebnis: "aGVsbG8=" |
double($value) |
Wandelt den Wert $value in einen Double-Wert um. Der Typ $value kann einer der folgenden sein: int, uint oder string. |
Ergebnis: 2.5
Ergebnis:
|
int($value) |
Wandelt den Wert $value in einen Integer um. Der Typ $value kann einer der folgenden sein: double, uint, string, enum oder timestamp. Wird ein Zeitstempel angegeben, entspricht der zurückgegebene Wert der Sekunde gemäß der Epoch-Zeit von Unix. |
Ergebnis:
Ergebnis:
Ergebnis: 123
Ergebnis: 1742801032 |
uint($value) |
Wandelt den Wert $value in einen vorzeichenlosen Ganzzahlwert um. Der Typ $value kann einer der folgenden sein: double, int oder string. |
Ergebnis: 3
Ergebnis: 123 |
string($value) |
Wandelt den Wert $value in eine Zeichenkette um. Der Typ $value kann einer der folgenden sein: bool, int, uint, double, bytes, timestamp oder duration. Wird eine Dauer angegeben, wird der Wert in Sekunden und Bruchteile von Sekunden umgewandelt, wobei ein „s“-Suffix angehängt wird. Wird ein Zeitstempel angegeben, wird der Wert im Format „ RFC3339 “ angegeben. |
Ergebnis:
Ergebnis: "1234"
Ergebnis: "hello"
Ergebnis: "60.1s"
Ergebnis: "2025-03-24T07:42:51Z" |
HTTP-Client
- Das Berechtigungsheader-Token muss vom Konsumenten generiert werden. Es kann beispielsweise ein API-Schlüssel mit langer Lebensdauer sein, der in die Funktion eingeschlossen ist.
| Syntax | Beschreibung | Beispiele |
|---|---|---|
hc.Get($url, $headers) |
Gibt den Statuscode, die Antwort-Header und den Antworttext zurück. Der Antworttext wird als JSON-Objekt zurückgegeben, wenn der Inhaltstyp „application/json“ lautet, oder als Zeichenfolge bei jedem anderen Inhaltstyp.
|
Ergebnis:
|
hc.GetAsString($url, $headers) |
Gibt die Antwort als serialisierte Zeichenfolge zurück. $url: URL des API-Endpunkts muss ein vollständiges $headers: JSON-URL-Objekt im Format {"headerName":"headerVal"} sein. |
Ergebnis:
|
hc.GetAsJson($url, $headers) |
Wertet die Antwort als JSON-Objekt aus. $url: URL des API-Endpunkts muss ein vollständiges $headers: JSON-URL-Objekt im Format {"headerName":"headerVal"} sein. |
Ergebnis:
|
hc.Post($url, $headers, $body) |
Gibt den Statuscode, die Antwortheader und den Antworthauptteil zurück. Der Antworthauptteil wird als JSON-Objekt zurückgegeben, wenn der Inhaltstyp application/json ist, oder als Zeichenfolge für einen anderen Inhaltstyp.
|
Ergebnis:
|
hc.Patch($url, $headers, $body) |
Gibt den Statuscode, die Antwort-Header und den Antworttext zurück. Der Antworttext wird als JSON-Objekt zurückgegeben, wenn der Inhaltstyp „application/json“ lautet, oder als Zeichenfolge bei jedem anderen Inhaltstyp.
|
Ergebnis:
|
hc.Put($url, $headers, $body) |
Gibt den Statuscode, die Antwort-Header und den Antworttext zurück. Der Antworttext wird als JSON-Objekt zurückgegeben, wenn der Inhaltstyp „application/json“ lautet, oder als Zeichenfolge bei jedem anderen Inhaltstyp.
|
Ergebnis: {"statusCode": "200", "responseHeaders": {"header": ["value1", "value2"]}, "responseBody": {"message": "success"}} |
hc.Delete($url, $headers) |
Gibt den Statuscode, die Antwort-Header und den Antworttext zurück. Der Antworttext wird als JSON-Objekt zurückgegeben, wenn der Inhaltstyp „application/JSON“ lautet, oder als Zeichenfolge bei jedem anderen Inhaltstyp.
{"headerName":"headerVal"} |
Ergebnis:
|
hc.Opts($options) |
$options: Acht Flags werden derzeit unterstützt:
hc-Instanz, sodass GetAsJSON und GetAsString aufgerufen werden können. |
|
$protocol://$host[:$port]Die „ URL “ des API-Endpunkts, der dem „ HTTP “-Client bereitgestellt wird, muss eine vollständige URL im Format URL lauten.- Das
$protocolmuss entweder „http“ oder „https“ sein. - Der Name
$hostmuss ein vollqualifizierter Domänenname (FQDN) sein. IP-Adressen sind nicht zulässig. - Die Portnummer
$portist optional. Der „ HTTP “-Client unterstützt die folgenden Ports. Die Verwendung anderer Ports führt zu einem Timeout.- Ports 80, 443 und 8088
- Portbereich 7000–7050
- Portbereich 8000–8050
Das Caching von HTTP-Antworten ist standardmäßig für GET-Aufrufe (GetAsString und GetAsJSON) mit einem Standardcacheablauf von 1 Minute aktiviert. Für POST-Aufrufe ist es standardmäßig inaktiviert. Zum Überschreiben der Standardeinstellungen für das Caching von HTTP-Clientantworten muss das Flag cache in hc.Opts mit dem Wert true oder false angegeben werden. Der Standardwert für die Cachelaufzeit beträgt 60 Sekunden. Zum Überschreiben der Standardcachelaufzeit muss das Flag cacheExpiry in hc.Opts mit dem Wert in Sekunden angegeben werden; zulässig sind Werte bis zu 3600 Sekunden (eine Stunde).
Adaptives Risiko
Verwenden Sie Risikofunktionen für adaptiven Zugriff, um auf die aktuelle Risikostufe der Benutzersitzung und die zugehörigen Berechtigungsdaten zuzugreifen.
Eine Richtlinie für adaptiven Zugriff muss mindestens einmal in der Sitzung vor der Verwendung des angepassten Attributs ausgewertet werden, um sicherzustellen, dass die Daten gefüllt werden. Andernfalls wird der Wert “NOT_AVAILABLE” zurückgegeben.
Die Funktionen für adaptive Zugriffsrisiken ermöglichen den Zugriff auf die entsprechenden Bedingungen der Zugriffsrichtlinie, die im Richtlinien-Editor angezeigt werden, wie unter „Verwalten von Regeln für adaptive Zugriffsrichtlinien“ beschrieben.
Einzelheiten zu den Risikoindikatoren finden Sie unter „Risikoindikatoren “.
Die Schlüsselindikatoren der Risikodaten sind als JSON strukturiert und im folgenden Beispiel zu sehen. Auf diese JSON-Struktur kann mithilfe der Funktion risk.getAdaptiveSessionData() zugegriffen werden.
Der Zugriff auf die vollständige adaptive Risikodatenantwort, die sich auf die Benutzersitzung bezieht, kann über die Funktion risk.getRawAdaptiveSessionData() erfolgen.
{
"riskLevel": "LOW",
"isNewDevice": false,
"isRiskyDevice": false,
"isRiskyConnection": false,
"remoteIP": "122.143.222.333",
"country": "ISR",
"city": "Jerusalem",
"isp": "013 Netvision",
"isNewLocation": false,
"behavioralAnomaly": false,
"userBehavioralScore":"100"
}
| Syntax | Beschreibung | Beispiele |
|---|---|---|
risk.getAdaptiveSessionLevel() |
Die Funktion gibt das adaptive Risikoniveau der Benutzersitzung zurück. |
Ergebnis:
|
risk.getAdaptiveSessionData() |
Gibt ein JSON-Array der Daten für adaptives Risiko zurück, die sich auf die Benutzersitzung beziehen. Eigenschaften mit dem Präfix is geben einen booleschen Wert zurück. Alle anderen geben eine Zeichenfolge zurück. |
Ergebnis: "behavioralAnomaly":false, "city":"Bundall", "country":"AUS", "isNewDevice":false, "isNewLocation":false, "isRiskyConnection":false, "isRiskyDevice":false, "isp":"Network Technology (AUST) P/L", "remoteIP":"120.29.43.158", "riskLevel":"LOW", "userBehavioralScore":"100" |
risk.getAdaptiveSessionData().($p) |
risk.getAdaptiveSessionData()Die Funktion gibt die einzelne Eigenschaft $p aus dem zurück. |
Ergebnis: true
Ergebnis:
|
string.Beispiel:
risk_score Um einen String-Wert zur Auswertung in einer Zugriffsrichtlinie zurückzugeben, muss er zunächst in einen String umgewandelt werden.
string(risk.getRawAdaptiveSessionData()[1].message.pinpoint_assessment.risk.risk_score)
Um eine mathematische oder logische Operation oder Auswertung in einer erweiterten Regel auszuführen, muss zuerst eine JSON-Zahl in eine int umgesetzt
int(risk.getRawAdaptiveSessionData()[1].message.pinpoint_assessment.risk.risk_score) > 900oder als Doppelzeichen ausgewertet werden. risk.getRawAdaptiveSessionData()[1].message.pinpoint_assessment.risk.risk_score > 900.0
Anwendung
Für bestimmte Anwendungsfälle (Bereitstellung und Abgleich) steht das app Objekt in den CELx-Regeln zur Verfügung. Dieses Objekt repräsentiert das Anwendungs-JSON, das für die Kontosynchronisierung verwendet wird.
app Objekt kann in der Regel als eigenständiges Map behandelt werden und verfügt zudem über die folgenden Hilfsmethoden.| Syntax | Beschreibung | Beispiele |
|---|---|---|
app.getSupportingData() |
Gibt die zugehörigen Daten der Anwendung zurück. |
Ergebnis:
|
OAuth
| Syntax | Beschreibung | Beispiele |
|---|---|---|
oauth.GetBearerToken($url, $clientId, $clientSecret) |
$clientIdDie Funktion ruft den angegebenen Token-Endpunkt $url unter Verwendung des Grant-Typs „client_credentials“ auf, wobei die Werte „ clientId “ und „ clientSecret$clientSecret “ übergeben werden, und gibt bei Erfolg das Zugriffstoken zurück. |
Ergebnis:
|
JWT-Funktionen
| Syntax | Beschreibung | Beispiele |
|---|---|---|
jwt.sign($payload, $headers) |
Die Funktion generiert ein signiertes JSON Web Token (JWT). Die Funktion nimmt zwei Parameter entgegen:
Hinweis: Standardverhalten:
|
Ergebnis:
|
Debug-Funktionen
Mit Debug-Funktionen kann ein Ausdruck ausgewertet und gleichzeitig ein Trace-Protokoll erstellt werden. Das Trace-Protokoll wird erstellt, wenn eine Regel im aktivierten Trace-Modus ausgeführt wird. Weitere Informationen zum Aktivieren des Trace-Modus und zum Anzeigen von Trace-Protokollen finden Sie unter „Trace-Einstellungen“ in den Abschnitten „Erstellen eines Flows“ und „Verwalten der Trace-Ansicht “.
| Syntax | Beschreibung | Beispiele |
|---|---|---|
debug($expr, $logString) |
$logStringWertet den Ausdruck $expr aus und erstellt das Debug-Protokoll.Die Funktion nimmt zwei Parameter entgegen:
|
Ergebnis: jke.comAußerdem wird das folgende Trace-Protokoll erstellt: „ |
debug($expr, $logString, $metadata) |
Wertet den Ausdruck $expr aus und generiert das Debug-Protokoll $logString mit den zusätzlichen benutzerdefinierten Metadaten.Die Funktion nimmt drei Parameter entgegen:
|
Ergebnis: jke.comAußerdem wird das folgende Trace-Protokoll erstellt: "
The email domain is jke.com" mit den folgenden Metadatenfeldern:
|
Cache-Funktionen
Cache-Funktionen können genutzt werden, um den Cache im Rule-Dienst zu nutzen. Es gibt zwei Arten von Cache-Funktionen: sitzungsbasierte und nicht sitzungsbasierte. cacheDie sitzungsbasierten Cache-Funktionen verwenden session, während die nicht sitzungsbasierten Cache-Funktionen verwenden. Werte, die mithilfe der sitzungsbasierten Cache-Funktionen im Cache gespeichert werden, sind an eine Benutzersitzung gebunden.
Der Gesamt-Cache (Sitzungs- und Nicht-Sitzungs-Cache) unterliegt einer maximalen Größenbeschränkung. Dieses Limit kann je nach Konfiguration des Mieters variieren. Sobald der Cache voll ist, führen alle Versuche, einen Eintrag zum Cache hinzuzufügen, zu einem Fehler.
{
"isSuccessful": true/false, //indicates if the operation was successful or not
"value": "<string>", // the value obtained from the operation
"errorID": "<string>", // the error ID if any
"errorMessage": "<string>", // the error message if any
}
| Syntax | Beschreibung | Beispiele |
|---|---|---|
session.Set($key, $value $ttlSec) |
Speichert einen Wert, der mit der Benutzersitzung verknüpft ist, im Cache. Diese Funktion nimmt drei Parameter entgegen:
|
Ergebnis: {"result":{"isSuccessful":true}} |
session.Get($key) |
Ruft den Wert ab, der der Benutzersitzung mit der $key im Cache zugeordnet ist. |
Ergebnis:{"result":{"isSuccessful":true, "value": "user1@web.com"}} |
session.Delete($key) |
Entfernt den Wert, der $key mit der Benutzersitzung verknüpft ist, aus dem Cache. |
Ergebnis: {"result":{"isSuccessful":true}} |
session.Exists($key) |
Prüft, ob der $key an eine Benutzersitzung gebundene Eintrag im Cache vorhanden ist. |
Ergebnis: {"result":{"isSuccessful":true, "value":"true"}} |
session.GetAndDelete($key) |
Ruft den Wert ab, der der Benutzersitzung mit der $key im Cache zugeordnet ist, und entfernt ihn aus dem Cache. |
Ergebnis: {"result":{"isSuccessful":true, "value": "user1@web.com"}} |
| Syntax | Beschreibung | Beispiele |
|---|---|---|
cache.Set($key, $value $ttlSec) |
Speichert einen Wert im Cache. Diese Funktion nimmt drei Parameter entgegen:
|
Ergebnis: {"result":{"isSuccessful":true}} |
cache.Get($key) |
Ruft den Wert ab, der $key im Cache gespeichert ist. |
Ergebnis:{"result":{"isSuccessful":true, "value": "DunderMifflin"}} |
cache.Delete($key) |
Entfernt den Wert mit dem $key aus dem Cache. |
Ergebnis: {"result":{"isSuccessful":true}} |
cache.Exists($key) |
Prüft, ob der $key Eintrag im Cache vorhanden ist. |
Ergebnis: {"result":{"isSuccessful":true, "value":"true"}} |
cache.GetAndDelete($key) |
Ruft den Wert mit dem $key im Cache ab und entfernt ihn aus dem Cache. |
Ergebnis: {"result":{"isSuccessful":true, "value": "DunderMifflin"}} |
| Fehler | Ergebnis |
|---|---|
| Die Länge des Schlüssels überschreitet den Grenzwert |
|
| Die Länge des Werts überschreitet den Grenzwert |
|
| Der Schlüssel wird beim Abrufen aus dem Cache nicht gefunden |
|
| Wenn die Cache-Grenze überschritten wird |
|
Geheime Funktionen
Verwenden Sie die Funktionen für Geheimnisse, um auf vorhandene Geheimnisse zuzugreifen.| Syntax | Beschreibung | Beispiele |
|---|---|---|
secrets.get($group, $name) |
Rufe das Geheimnis mit der angegebenen Gruppe $group und dem angegebenen Namen ab $name |
secrets.get("apiKeys", "testKey")Ergebnis: <the testKey secret in the apiKeys group> |
secrets.get($name) |
$nameRufe das Geheimnis mit dem angegebenen Namen ab. Die Gruppe des Geheimnisses ist die Standardgruppe „default“. |
secrets.get("testKey")Ergebnis: <the testKey secret in the default group> |