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 Namen formalDisplayName 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.
Hinweis: Die Funktionssyntax ähnelt der von C und der von „ JavaScript™ “. Es basiert jedoch auf einer einzeiligen Ausdruckssprache, der „ Google “ (Common Expression Language Extension).

Um erweiterte Regelattribute zu konfigurieren, navigieren Sie in der Admin-Konsole zu „Verzeichnis > Attribute “. 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 – car und hobbies. 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.$property Zugriff auf $property. Sowohl . als auch [".."] kann verwendet werden.
user.name.familyName + ", " + user.name["givenName"]

Ergebnis:

Hill, Jessica
user.$values.filter(x, $condition) $values: Eine Liste. Von der Funktion filter werden Werte basierend auf $condition extrahiert.
user.emails.filter(x, x.type == "work")[0].value

Ergebnis:

jessica@jke.com
user.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:

Reading
user.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.formatted

Ergebnis:

Jacob Jones
user.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].name

Ergebnis:

Basic access
user.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 $search können optional angegeben werden. Die unterstützten Suchparameter finden Sie hier: https://docs.verify.ibm.com/verify/reference/getfidoregistrations_v20
user.getFIDO2Registrations("enabled=true").fido2[0].enabled

Ergebnis:

true
user.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].id

Ergebnis:

e8bf1dac-8245-452b-b7c4-8a700a1eb078
user.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].name

Ergebnis :

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ür error bedeutet, 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 $attributes Argument 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 $attributes Argument 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 $attributes Argument 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 email Attributwerte und username sind obligatorisch. Die übrigen Werte sind optional.

Um das Passwort des neuen Benutzers festzulegen, fügen Sie in $m eine Eigenschaft mit dem Namen password und 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 email Attributwerte und username sind obligatorisch. Die übrigen Werte sind optional. Um das Passwort des neuen Benutzers festzulegen, fügen Sie eine Eigenschaft mit $m dem Namen password und 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, wenn notifyType auf 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, wenn notifyType auf 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'})
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 die marketing und helpdesk festgelegt ist.
Das Attribut idsuser ist 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.$property Greifen Sie auf $property zu. Der Wert in idsuser ist immer ein Array aus Zeichenfolgen.
idsuser.userRoles[1]

Ergebnis:

helpdesk
idsuser.getValue($property) Gibt den Wert von $property als Zeichenfolge zurück. Wenn der Wertebereich mehrere Einträge hat, wird der erste Eintrag zurückgegeben. Wenn $property nicht vorhanden ist, wird eine leere Zeichenfolge zurückgegeben.
idsuser.getValue('userRoles') 

Ergebnis:

"Marketing"
idsuser.getValues($property) Gibt alle Werte von $property als Zeichenfolgearray zurück. Wenn $property nicht vorhanden ist, wird ein nil-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-ip und user-agent sendet, kann requestContext die Informationen extrahieren. Sie können an einen externen Endpunkt gesendet werden, um den Risikoscore für den Benutzer zu bestimmen.

requestContext ist 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.$property Greifen Sie auf $property zu. Der Wert in requestContext ist immer ein Array aus Zeichenfolgen.
requestContext.devicePlatform[1]

Ergebnis:

MACOS
requestContext.getValue($property) Gibt den Wert von $property als Zeichenfolge zurück. Wenn der Wertebereich mehrere Einträge hat, wird der erste Eintrag zurückgegeben. Wenn $property nicht vorhanden ist, wird eine leere Zeichenfolge zurückgegeben.
requestContext.getValue('x-forwarded-for')

Ergebnis:

116.15.12.181
requestContext.getValues($property) Gibt alle Werte von $property als Zeichenfolgearray zurück. Wenn $property nicht 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 ctx zugegriffen werden.
Die folgenden Eigenschaften sind für das Kontextobjekt verfügbar:
Syntax Beschreibung Beispiele
ctx.currentValue Zugriff 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

Operatoren, die in Attributfunktionen unterstützt werden, umfassen die Standardliste, die in jeder Programmiersprache verfügbar ist, Beispiele: +, -, *, /, >, <. + kann zum Verketten von Zeichenfolgen verwendet werden.
Bediener Beschreibung Beispiele
== Gleich
user.name.givenName == "Jessica"
!= Ungleich
idsuser.myroles[0] == "marketing"
|| Logisches Oder
user.name.givenName == "Jessica" || user.name.formatted.startsWith("Hill")
&& Logisches Und
1 == 1 && 2 == 2
[ ] Zuordnungszugriff
user["name"]["givenName"]
+ Verknüpfung und Hinzufügung (abhängig vom Typ)
"Hello" + " " + "World"
- Subtraktion
10 - 5
* Multiplikation
5 * 2
/ Geschäftsbereich
20 / 4
> Größer als
1 > 2
< Kleiner als
1 < 2
>= Größer-gleich
1 >= 1
<= Kleiner-gleich
1 <= 1
? Ternärer IF-Operator
a == b ? true : false

Standardfunktionen

Attributfunktionen können Standardfunktionen verwenden, um Tasks wie die Bearbeitung von Attributwerten und den Zugriff auf Elemente in einer Liste auszuführen.
Tabelle 2. Zeichenfolgenfunktionen
Syntax Beschreibung Beispiele
$string.contains($fragment) Prüft, ob $fragment in $string enthalten ist.
"helloworld".contains("hello")

Ergebnis:

true
$string.endsWith($fragment) Prüft, ob $string mit $fragment endet.
"hello world".endsWith("old")

Ergebnis:

false
$string.matches($regex) Prüft, ob $regex dem Muster in $string entspricht.
"foo".matches("k.*")

Ergebnis:

false
$string.toUpper() Konvertiert $string in Großbuchstaben.
"hello".toUpper()

Ergebnis:

HELLO
$string.toLower() Konvertiert $string in Kleinbuchstaben.
"HEllO".toLower()

Ergebnis:

hello
$string.base64Encode() Base64 codiert $string.
"hello".base64Encode()

Ergebnis:

aGVsbG8=
$string.base64Decode() Base64 decodiert $string.
"aGVsbG8=".base64Decode()

Ergebnis:

hello
$string.base64URLEncode() Base64URL kodiert $string.
"hello_world!".base64URLEncode()

Ergebnis:

aGVsbG9fd29ybGQh

$string.base64URLDecode() Base64URL dekodiert $string.
"aGVsbG9fd29ybGQh".base64URLDecode()

Ergebnis:

hello_world!

$string.size() Größe von $string
"hello".size()

Ergebnis:

5
$string.substring($begin,$end) Gibt die Zeichenfolge zwischen $begin index (including) und $end index (excluding) zurück.
"hello".substring(1,4)

Ergebnis:

ell
$string.split($delim) Gibt das Array aus Zeichenfolgen zurück, die durch $delim geteilt werden.
"hello".split("e")

Ergebnis:

["h","llo"]
$string.replaceAll($old,$new) Ersetzt alle Vorkommen von $old durch $new.
"hello".replaceAll("l","p")

Ergebnis:

heppo
$string.matchAndReplaceAll($regex, $newStr) Ersetzt alle Übereinstimmungen von $regex durch $newStr.
"some12#$text".matchAndReplaceAll("[^a-zA-Z]+", "-")

Ergebnis:

some-text
$string.indexOf($str) $strGibt den Index des ersten Vorkommens von zurück.
"hello".indexOf("l")

Ergebnis:

2
$string.lastIndexOf($str) Gibt den Index des letzten Vorkommens von $str. zurück.
"hello".lastIndexOf("l")

Ergebnis:

3
Tabelle 3. Listenfunktionen
Syntax Beschreibung Beispiele
$values.size() Größe der Liste $values
["hello", "world"].size()

Ergebnis:

2

$values.filter(x, $condition) Filtert $values nach $condition.
["hello", "world", "helios"].filter(x,
            x.startsWith("hel"))

Ergebnis:

["hello", "helios"]

$values.all(x, $condition) Prüft, ob alle $values-Vorkommen $condition erfüllen.
["hello", "world", "helios"].all(x,
            x.contains("hel"))

Ergebnis:

false

$values.exists(x, $condition) Prüft, ob ein Wert $condition entspricht.
["hello", "world", "helios"].exists(x,
            x.contains("hel"))

Ergebnis:

true

$values.exists_one(x, $condition) Prüft, ob genau ein Wert $condition entspricht.
["hello", "world", "helios"].exists(x,
            x.contains("hel"))

Ergebnis:

false

$values.map(x, $op) Führt $op für jeden Wert aus.
["hello", "world", "helios"].map(x, x.toUpper())

Ergebnis:

["HELLO","WORLD","HELIOS"]

stringToJson($s) Wandelt die Zeichenkette $s in ein JSON-Array um.
stringToJson('[{\"hello\":\"world\"},{\"key\":\"value\"}]')

Ergebnis:

[{"hello":"world"},{"key":"value"}]

jsonToString($json) Konvertieren Sie die Liste $json in eine Zeichenfolge.
jsonToString(["hello","world","helios"])

Ergebnis:

"[\"hello\",\"world\",\"helios\"]

joinStrings($values, $s) Verknüpft die Zeichenfolgen in der Liste $values mit dem Trennzeichen $s.
joinStrings(['hello','world','helios'], ' + ')

Ergebnis:

"hello + world + helios"

$values.flatten() Wandelt eine Liste von Listen $values in eine einzige Liste um.
[[1,2],["a","b","c"]].flatten()

Ergebnis:

[1,2,"a","b","c"]

Hinweis: Du kannst Listenfunktionen auch auf Map-Objekte anwenden. Die Funktion wird für eine Liste der Schlüssel in der Zuordnung ausgeführt. Wenn die Eingabe beispielsweise Folgendes enthält:
{
idsuser: {
"attr1":"value1",
"attr2":"value2"
}
}
Für die Funktion idsuser.exists(x, $condition) ist x [ "attr1", "attr2" ].
Tabelle 4. Hash-Funktionen
Syntax Beschreibung Beispiele
sha256($value) Berechnet den SHA256-Hashwert für die angegebene Zeichenfolge. Die Ausgabe ist eine Zeichenkette, die einen Hexadezimalwert darstellt.
sha256('hello')

Ergebnis:

`2cf24dba...`

sha512($value) Berechnet den SHA512-Hashwert für die angegebene Zeichenfolge. Die Ausgabe ist eine Zeichenkette, die einen Hexadezimalwert darstellt.
sha512('hello')

Ergebnis:

`9b71d224...`

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.
hmacSha1('hello','key')

Ergebnis:b34ceac4516ff23a143e61d79d0fa7a4fbe5f266

Tabelle 5. Hex/Base64 Funktionen
Syntax Beschreibung Beispiele
base64ToHex($value) Wandelt die Zeichenkette $value vom Typ „ base64-encoded “ in einen Hexadezimalwert um.
base64ToHex('Gis8Tw==')

Ergebnis:

1a2b3c4f

hexToBase64($value) Wandelt den Hexadezimalwert $value in eine Zeichenkette vom Typ „ base64-encoded “ um.
hexToBase64('1a2b3c4f')

Ergebnis:

Gis8Tw==

base64URLEncodedToHex($value) Wandelt die Zeichenkette $value vom Typ „ base64URL-encoded “ in einen Hexadezimalwert um.
base64URLEncodedToHex('Gis8TV5v')

Ergebnis:

1a2b3c4d5e6f

hexToBase64URLEncoded($value) Wandelt den Hexadezimalwert $value in eine Zeichenkette vom Typ „ base64URL-encoded “ um.
hexToBase64URLEncoded('1a2b3c4d5e6f')

Ergebnis:

Gis8TV5v

Tabelle 6. Map- und Objektfunktionen
Syntax Beschreibung Beispiele
has($m.$p) Prüfe, ob die Abbildung $m die Eigenschaft $p erfüllt.
has({ "hello": "world" }.hello)

Ergebnis:

true

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).
has({ "email.address": "abc@email.com"}, "email.address")

Ergebnis:

true

jsonToString($m) Wandle die Karte $m in eine Zeichenkette um
jsonToString({"hello":"world"})

Ergebnis:

"{\"hello\":\"world\"}"

stringToJson($s) Wandelt die Zeichenkette $s in eine Map um.
stringToJson("{\"hello\":\"world\"}")

Ergebnis:

{"hello": "world"}

jsonToFormURLEncoded($m, $doUrlEncode) Konvertiert die Zuordnung $m in ein Formular. trueWenn $doUrlEncode auf gesetzt ist, wird das Formular nach dem Standard „ URL “ kodiert.
jsonToFormURLEncoded({'hello':'world', 'key1':'value 1'}, true)

Ergebnis:

"hello=world&key1=value+1"

$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.
{"hello": "world"}.put("key1",
    "value1")

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.
{"hello": "world"}.putAll({"key1": "value1", "test":
      true})

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.
{"hello": "world", "key1":
    "value1"}.remove("key1")

Ergebnis:

{"hello": "world"}
$m.removeAll($l) Entfernt alle Zuordnungen für die Liste der Schlüssel $l aus dem Map $m , sofern vorhanden.
{"hello": "world", "key1": "value1", "test":
      true}.removeAll(["key1", "test"])

Ergebnis:

{"hello": "world"}
Hinweis: Um zu prüfen, ob eine Eigenschaft vorhanden ist, deren Name bestimmte Zeichen enthält, verwenden Sie die exists Funktion „List“.
idsuser.exists(x, x == "ext:idsource_attr1")
Sie gibt true zurück, wenn die Eigenschaft vorhanden ist, andernfalls false.
Tabelle 7. Zeitstempelfunktionen
Syntax Beschreibung Beispiele
now Gibt ein Zeitmarkenobjekt mit der aktuellen Uhrzeit zurück.
now

Ergebnis:

"2021-08-17T08:24:58Z"
timestamp($s) Gibt ein Zeitstempelobjekt zurück, indem die Eingabezeichenfolge $s gemäß RFC3339 konvertiert wird.
timestamp(1629188698)

Ergebnis:

"2021-08-17T08:24:58Z"

$t.getDate() Gibt den Tag des Monats aus der Zeitmarke $t als ganze Zahl mit einer auf eins basierenden Indexierung zurück.
timestamp('2021-08-17T08:24:58Z').getDate()

Ergebnis:

17
$t.getDayOfMonth() Gibt den Tag des Monats aus der Zeitmarke $t als ganzzahlige, nullbasierte Indexierung zurück.
timestamp('2021-08-17T08:24:58Z').getDayOfMonth()

Ergebnis:

16
$t.getDayOfWeek() Gibt den Wochentag aus der Zeitmarke $t als ganze Zahl (nullbasiert) mit null für den Sonntag zurück.
timestamp('2021-08-17T08:24:58Z').getDayOfWeek()

Ergebnis:

2
$t.getDayOfYear() Gibt den Tag des Jahres aus der Zeitmarke $t als ganzzahlige, nullbasierte Indexierung zurück.
timestamp('2021-08-17T08:24:58Z').getDayOfYear()

Ergebnis:

228
$t.getMonth() Gibt den Monat aus der Zeitmarke $t als ganzzahlige, nullbasierte Indexierung zurück.
timestamp('2021-08-17T08:24:58Z').getMonth()

Ergebnis:

7
$t.getFullYear() Gibt das Jahr aus der Zeitmarke $t als ganze Zahl zurück.
timestamp('2021-08-17T08:24:58Z').getFullYear()

Ergebnis:

2021
$t.getHours() Gibt die Stunden des Zeitstempels $t als Ganzzahl zurück.
timestamp('2021-08-17T08:24:58Z').getHours()

Ergebnis:

8
$t.getMinutes() Gibt die Minuten aus der Zeitmarke $t als Ganzzahl zurück.
timestamp('2021-08-17T08:24:58Z').getMinutes()

Ergebnis:

24
$t.getSeconds() Gibt die Sekunden aus der Zeitmarke $t als ganze Zahl zurück.
timestamp('2021-08-17T08:24:58Z').getSeconds()

Ergebnis:

58
$t.getMilliseconds() Gibt die Millisekunden aus der Zeitmarke $t als ganze Zahl zurück.
timestamp('2021-08-17T08:24:58.642Z').getMilliseconds()

Ergebnis:

642
int($t) Wandelt den Zeitstempel in int64 Sekunden seit der UNIX®-Epoche um.
int(timestamp('2021-08-17T08:24:58Z'))

Ergebnis:

1629188698
duration($d) Die Dauer $d muss als Zeichenfolge angegeben werden, die mit "s" endet und die Dauer in Sekunden angibt.
timestamp('2021-08-17T08:24:58Z') + duration('3600s')

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.
formatTime(timestamp('2021-08-17T08:24:58Z'), 'Monday, 02-Jan-06 15:04:05 MST')

Ergebnis:

"Tuesday, 17-August-21 08:24:58 UTC"

Tabelle 8. Funktionen zur URI-Kodierung und -Dekodierung
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 ; , / ? : @ & = + $ - _ . ! ~ * ' ( ) #.
encodeURI('test.html?name=Jürgen&car=audi')

Ergebnis:

"test.html?name=J%C3%BCrgen&car=audi"
decodeURI($uri) $uriGibt eine Zeichenkette zurück, die die dekodierte Version der kodierten URI darstellt.
decodeURI('test.html?name=J%C3%BCrgen&car=audi')

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 - _ . ! ~ * ' ( ).
encodeURI('test.html?name=Jürgen&car=audi')

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.
decodeURIComponent('test.html%3Fname%3DJ%C3%BCrgen%26car%3Daudi')

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.
genUUID()

Ergebnis:

4eb1a3f3-5461-4b91-8d69-69e25f2a1b6a

Typ- und Konvertierungsfunktionen

Syntax Beschreibung Beispiele
type($value) Gibt den Typ von $value. zurück.
type(1234)

Ergebnis:"int"

type("hello")

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".

"False"Die zulässigen Werte für false sind "false", und "FALSE".

bool("true")

Ergebnis:

true

bool("FALSE")

Ergebnis:

false
bytes($string) Wandelt die Zeichenkette $string in Bytes um.
bytes("Hello")

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.
double(10)/4.0

Ergebnis:

2.5

double("3.14")

Ergebnis:

3.14

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.
int(10.0/4)

Ergebnis:

2

int(3.14)

Ergebnis:

3

int("123")

Ergebnis:

123

int(now)

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.
uint(3.14)

Ergebnis:

3

uint("123")

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.
string(true)

Ergebnis:

"true"

string(1234)

Ergebnis:

"1234"
string(b'helllo')

Ergebnis:

"hello"
string(duration('1m100ms'))

Ergebnis:

"60.1s"

string(now)

Ergebnis:

"2025-03-24T07:42:51Z"

HTTP-Client

Attributfunktionen können geschrieben werden, um Aufrufe an externe API-Endpunkte zu senden, um Werte abzurufen.
Hinweis:
  • 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. $url: URL Der API-Endpunkt muss eine vollständige URL sein: URL

{"headerName":"headerVal"}$headers: JSON Objekt im Formular.

hc.Get("https://api.jke.com/resources/" + user.name.givenName, {"Authorization":"Some token"})

Ergebnis:

{"statusCode": "200", "responseHeaders": {"header": ["value1", "value2"]}, "responseBody": {"value":"someValue"}}

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.
hc.GetAsString("https://api.jke.com/resources/" + user.name.givenName, {"Authorization":"Some token"})

Ergebnis:

"{\"value\":\"someValue\"}"

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.
hc.GetAsJson("https://api.jke.com/resources/" + user.name.givenName, {"Authorization":"Some token"}).value

Ergebnis:

"someValue"

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.

$url - Die „ URL “ des API-Endpunkts muss eine vollständige URL sein ( URL ).

$headers - Das JSON-Objekt im Format {"headerName":"headerVal"}

$body - Hauptteil in Form einer Zeichenfolge anfordern.

hc.Post("https://api.jke.com/resources", {"Authorization": "Some token"}, "{\"key\":\"value\"}")

Ergebnis:

{"statusCode": "200", "responseHeaders": {"header": ["value1", "value2"]}, "responseBody": {"message": "success"}}

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.

$url: URL des API-Endpunkts muss eine vollständige URL sein.

$headers: JSON-Objekt in der Form {"headerName":"headerVal"}.

$body: Request-Body in Form einer Zeichenkette.

hc.Patch("https://api.jke.com/resources", {"Authorization": "Some token"}, "{\"key\":\"value\"}")

Ergebnis:

{"statusCode": "200", "responseHeaders": {"header": ["value1", "value2"]}, "responseBody": {"message": "success"}}

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.

$url: URL des API-Endpunkts muss eine vollständige URL sein.

$headers: JSON-Objekt in der Form {"headerName":"headerVal"}.

$body: Request-Body in Form einer Zeichenkette.

hc.Put("https://api.jke.com/resources", {"Authorization": "Some token"},
      "{\"key\":\"value\"}")

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.

$url: Die „ URL “ des API-Endpunkts muss eine vollständige URL sein.

$headers: Das JSON-Objekt im Formular

{"headerName":"headerVal"}
hc.Delete("https://api.jke.com/resources", {"Authorization": "Some token"})

Ergebnis:

{"statusCode": "200", "responseHeaders": {"header": ["value1", "value2"]}, "responseBody": {"message": "success"}}

hc.Opts($options) $options: Acht Flags werden derzeit unterstützt:
  1. insecure: Gibt an, dass die SSL-Verbindung unter Umständen nicht sicher ist.
  2. certLabel: Bezeichnung des Unterzeichnerzertifikats, das in den CI-Tenant hochgeladen wird.
  3. tlsMinVersion: Die unterstützte TLS-Mindestversion. Die verfügbaren Optionen sind: TLSv1.0, TLSv1.1, TLSv1.2. Wenn dieses Flag nicht angegeben wird, wird die Mindestversion von TLS auf TLSv1.2 gesetzt.
  4. followRedirects: Gibt an, ob der HTTP-Client Umleitungen folgt. Wenn kein Wert angegeben ist, lautet die Einstellung standardmäßig 'false'.
  5. cache: Ein boolescher Wert, der angibt, ob die Antwort zwischengespeichert wird. Die Standardeinstellung ist 'true' für GET-Aufrufe und 'false' für andere HTTP-Methoden.
  6. cacheExpiry: Die Lebensdauer der zwischengespeicherten Antwort in Sekunden (maximal 1 Stunde). Wenn die Lebensdauer nicht angegeben wird, wird der Standardwert 60 Sekunden verwendet.
  7. mtls: Boolescher Wert, der angibt, ob gegenseitige TLS für die Anforderung aktiviert werden soll. Wenn der Wert auf wahr gesetzt ist, werden die Werte für die folgenden Flags ignoriert: insecure, certLabel, tlsMinVersion, followRedirects.
  8. mtlsCert: Die Bezeichnung für ein vorhandenes persönliches Zertifikat, das für die MTLS-Anforderung bereitgestellt werden soll.
Diese Funktion antwortet mit einer hc-Instanz, sodass GetAsJSON und GetAsString aufgerufen werden können.
hc.Opts({"certLabel": "jkeCA","insecure":false,
"tlsMinVersion":"TLSv1.2", "followRedirects":true,"cache":true,
"cacheExpiry":"1200"}).GetAsString(...)
Hinweis: Die maximale Größe des Antworttextes ist auf 4 MB pro Anfrage begrenzt.
URL Einschränkungen
$protocol://$host[:$port]Die „ URL “ des API-Endpunkts, der dem „ HTTP “-Client bereitgestellt wird, muss eine vollständige URL im Format URL lauten.
  1. Das $protocol muss entweder „http“ oder „https“ sein.
  2. Der Name $host muss ein vollqualifizierter Domänenname (FQDN) sein. IP-Adressen sind nicht zulässig.
  3. Die Portnummer $port ist 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
Caching von HTTP-Clientantworten

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.
risk.getAdaptiveSessionLevel()

Ergebnis:

"LOW"

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.
risk.getAdaptiveSessionData()

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.
risk.getAdaptiveSessionData().isRiskyDevice

Ergebnis:

true
risk.getAdaptiveSessionData().isp

Ergebnis:

"Network Technology (AUST) P/L”

Hinweis: Bei der Verwendung extrahierter adaptiver Attribute im Attribut-Mapping für Anwendungen oder bei Bedingungen mit benutzerdefinierten Attributen bei der Auswertung von Zugriffsrichtlinien kann eine Typumwandlung erforderlich sein, einschließlich der Konvertierung von JSON in 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) > 900
oder 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.

Das 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.
app.getSupportingData()

Ergebnis:

<JSON object representing supporting data>

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.
oauth.GetBearerToken("https://api.jke.com/token", "123456-abcd-efgh-9876-q1w2e3r4t5y6", "secret")

Ergebnis:

15PSJF576qi2LF658k30I1WLTwGOw2Vzage2AtiS

JWT-Funktionen

Syntax Beschreibung Beispiele
jwt.sign($payload, $headers) Die Funktion generiert ein signiertes JSON Web Token (JWT). Die Funktion nimmt zwei Parameter entgegen:
  • $payload: Dies enthält die Nutzdaten, bei denen es sich voraussichtlich um ein JSON-Objekt handelt.
  • $headers: Dies enthält die Überschriften wie kid, typ, alg, usw. „The“ kid ist der Name des persönlichen Zertifikats, das in den Verify-Mandanten geladen wurde.
Hinweis: Standardverhalten:
  • Wenn kid in den Headern nicht angegeben ist, wird das standardmäßige persönliche Zertifikat des Mandanten zum Signieren des JWT verwendet.
  • Wenn alg in den Headern nicht angegeben ist, verwendet das System „ RS256 “, um das JWT zu signieren.
jwt.sign({'key1': 'value1', 'auth': ['lval3', 'lval4'], 'iat': 1696567390}, {'alg':'RS256','kid':'cert1'})

Ergebnis:

eyJhb...<truncated>...J6d5EzIU-ldnemMV75Q

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:

  • $expr: Der auszuwertende Ausdruck.
  • $logString: Die Protokollzeichenfolge, die generiert wird. Es kann ein Ausdruck sein und sollte immer zu einer Zeichenkette ausgewertet werden. $expr$value$logString sollte die Zeichenfolge enthalten, die zum Ersetzen des Werts verwendet wird, der bei der Auswertung von ermittelt wurde.
debug("jessica@jke.com".split("@")[1], "The email domain is $value")

Ergebnis:

jke.com

Außerdem wird das folgende Trace-Protokoll erstellt: „The email domain is jke.com“.

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:

  • $expr: Der auszuwertende Ausdruck.
  • $logString: Die Protokollzeichenfolge, die generiert wird. Es kann ein Ausdruck sein und sollte immer zu einer Zeichenkette ausgewertet werden. $expr$value$logString sollte die Zeichenfolge enthalten, die zum Ersetzen des Werts verwendet wird, der bei der Auswertung von ermittelt wurde.
  • $metadata: Die benutzerdefinierten Metadaten, die zusammen mit dem Protokoll gesendet werden und als Abbildung von Schlüssel-Wert-Paaren bereitgestellt werden. Der Wert jedes Paares kann ein Ausdruck sein, der zu einer Zeichenkette ausgewertet werden muss.
debug("jessica@jke.com".split("@")[1], "The email domain is $value", {"flow":
      "login", "time": string(now)})

Ergebnis:

jke.com
Außerdem wird das folgende Trace-Protokoll erstellt: "The email domain is jke.com" mit den folgenden Metadatenfeldern:
  • "flow": "login"
  • "time": "< timestamp >"

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.

Das Ergebnis der Cache-Funktionen hat das folgende Format –
{
  "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
}
Tabelle 9. Sitzungsbasierte Cache-Funktionen
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:

  • $key: der im Cache verwendete Schlüssel. Es kann ein Ausdruck sein und sollte immer zu einer Zeichenkette ausgewertet werden. Die maximale Länge dieses Schlüssels beträgt 16 Zeichen.
  • $value: der zu speichernde Wert. Es kann ein Ausdruck sein und sollte immer zu einer Zeichenkette ausgewertet werden. Die maximale Länge dieses Werts beträgt 1.000.000 Zeichen.
  • $ttlSec: die Lebensdauer des Wertes. Der Höchstwert beträgt 28800.
session.Set("computedID", "user1@web.com", "1200")
Ergebnis:

{"result":{"isSuccessful":true}}
session.Get($key) Ruft den Wert ab, der der Benutzersitzung mit der $key im Cache zugeordnet ist.
session.Get("computedID")
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.
session.Delete("computedID")
Ergebnis:

{"result":{"isSuccessful":true}}
session.Exists($key) Prüft, ob der $key an eine Benutzersitzung gebundene Eintrag im Cache vorhanden ist.
session.Exists("computedID")
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.
session.GetAndDelete("computedID")
Ergebnis:

{"result":{"isSuccessful":true, "value": "user1@web.com"}}
Tabelle 10. Nicht sitzungsbasierte Cache-Funktionen
Syntax Beschreibung Beispiele
cache.Set($key, $value $ttlSec) Speichert einen Wert im Cache.
Diese Funktion nimmt drei Parameter entgegen:
  • $key: der im Cache verwendete Schlüssel. Es kann ein Ausdruck sein und sollte immer zu einer Zeichenkette ausgewertet werden. Die maximale Länge dieses Schlüssels beträgt 16 Zeichen.
  • $value: der zu speichernde Wert. Es kann ein Ausdruck sein und sollte immer zu einer Zeichenkette ausgewertet werden. Die maximale Länge dieses Werts beträgt 1.000.000 Zeichen.
  • $ttlSec: die Lebensdauer des Wertes. Der Höchstwert beträgt 604800.
cache.Set("companyName", "DunderMifflin", "1200")

Ergebnis:

{"result":{"isSuccessful":true}}
cache.Get($key) Ruft den Wert ab, der $key im Cache gespeichert ist.
cache.Get("companyName")
Ergebnis:

{"result":{"isSuccessful":true, "value": "DunderMifflin"}}
cache.Delete($key) Entfernt den Wert mit dem $key aus dem Cache.
cache.Delete("companyName")
Ergebnis:

{"result":{"isSuccessful":true}}
cache.Exists($key) Prüft, ob der $key Eintrag im Cache vorhanden ist.
cache.Exists("companyName")
Ergebnis:

{"result":{"isSuccessful":true, "value":"true"}}
cache.GetAndDelete($key) Ruft den Wert mit dem $key im Cache ab und entfernt ihn aus dem Cache.
cache.GetAndDelete("companyName")
Ergebnis:

{"result":{"isSuccessful":true, "value": "DunderMifflin"}}
Tabelle 11. Häufige Fehlerzustände
Fehler Ergebnis
Die Länge des Schlüssels überschreitet den Grenzwert
{"error":{"messageId":"CSIBU2000E","messageDescription":"The length of the
              key provided exceeds the character limit of [16]."}}}
Die Länge des Werts überschreitet den Grenzwert
{"error":{"messageId":"CSIBU2000E","messageDescription":The length of the
              value provided for the key [exampleKey] exceeds the character limit of
              [1000000]."}}}
Der Schlüssel wird beim Abrufen aus dem Cache nicht gefunden
{"result":{"errorID":"CSIBU2040E","errorMessage":"Failed to get a value from
              the cache with the key [exampleKey].","isSuccessful":false}}
Wenn die Cache-Grenze überschritten wird
{"error":{"messageId":"CSIBU2000E","messageDescription":"Cache limit has
              been exceeded."}}

Geheime Funktionen

Verwenden Sie die Funktionen für Geheimnisse, um auf vorhandene Geheimnisse zuzugreifen.
Hinweis: Geheimnisse in CELx-Ausdrücken ( VDEV_66277 ) können auf Anfrage aktiviert werden. Um diese Funktion anzufordern, wenden Sie sich bitte an Ihren Vertriebsmitarbeiter bei IBM oder an IBM und teilen Sie uns mit, dass Sie diese Funktion nutzen möchten. Wenn Sie die Berechtigung zum Erstellen eines Support-Tickets haben, erstellen Sie bitte ein Support-Ticket mit dem Betreff „Geheimnisse in CELx-Ausdrücken“. IBM Verify Mit Probeabonnements können keine Support-Tickets erstellt werden.
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>