Funções de atributo
É possível usar as amostras e a sintaxe da API de configuração para criar funções customizadas.
Visão geral
Use as funções para referenciar, transformar e combinar valores de atributos antes de serem transmitidos para um aplicativo na forma de um token de autenticação de conexão única ou quando provisionar contas. IBM® VerifyAs funções podem acessar as credenciais da fonte de identidade utilizadas para autenticação, o objeto de usuário (no formato SCIM) armazenado no Cloud Directory e qualquer ponto de extremidade de API externo. Por exemplo, um atributo que é chamadoformalDisplayName pode ser criado como um atributo de valor fixo, e uma função que concatene user.name.givenName e user.name.familyName de maneira especificada pode ser especificada.Para configurar atributos avançados de regras, no Console de administração, acesse . Em seguida, mapeie esses atributos na configuração do aplicativo, da mesma forma que se faz com todos os outros tipos de atributos.
Objetos de domínio
O termo objetos de domínio é uma frase de catch-all que é usada para indicar todos os objetos possíveis que podem ser acessados em uma função customizada de um atributo.
- Usuário do Cloud Directory
Para cada usuário que se autentica, Verify é criada uma conta de usuário no Cloud Directory. Esta conta é representada como um objeto SCIM. Nos exemplos a seguir, a conta do usuário do Cloud Directory a seguir é usada.
O objeto SCIM a seguir é a conta do usuário.{ "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 }Nota: No objeto SCIM, estão definidos dois atributos personalizados:carehobbies. Esses atributos são extensões de esquema que podem ser configuradas por meio do Console Administrativo. É possível adicionar valores ao objeto de usuário por meio da Verify API de Usuários.Sintaxe Descrição Exemplos user.$propertyAcesse o $property. Ambos .e[".."]podem ser usados.user.name.familyName + ", " + user.name["givenName"]Resultado:
Hill, Jessicauser.$values.filter(x, $condition)$values: uma lista. A função filterextrai valores baseados em$condition.user.emails.filter(x, x.type == "work")[0].valueResultado:
jessica@jke.comuser.getCustomValues($attrName)Função para obter valores de atributos personalizados como uma lista. $attrName: O nome do atributo no objeto do usuário retorna null se o atributo não existir.user.getCustomValues("car")Resultado:
["Ford Mustang Mach-E","Maruti Suzuki 800"]user.getCustomValue($attrName)Função para obter o valor do primeiro atributo personalizado da lista. $attrName: O nome do atributo no objeto do usuário. Retorna uma string vazia ("") se o atributo não existir.user.getCustomValue("hobbies")Resultado:
Readinguser.getManager()Função para obter as informações do gerente do usuário atual. A função retorna a conta de usuário do gerenciador (como um objeto SCIM). Se nenhum gerenciador for especificado para o usuário, ele retornará um objeto JSON vazio. Se for retornado um objeto gerenciador, ele pode ser usado da mesma forma que o objeto usuário, ou seja, é possível chamar as diversas funções desse objeto. user.getManager().name.formattedResultado:
Jacob Jonesuser.getRoles()Função para obter as permissões do usuário atual. A função retorna a lista de permissões do usuário como um objeto JSON. Se a lista de direitos for retornada, ela pode ser usada como um objeto JSON. user.getRoles().resources[0].nameResultado:
Basic accessuser.getFIDO2Registrations($search)Função para obter os registros do FIDO2 do usuário atual. A função retorna a lista de registros do site FIDO2 que pertencem ao usuário. É possível fornecer parâmetros $searchde pesquisa, se desejar. Os parâmetros de pesquisa compatíveis podem ser encontrados aqui: https://docs.verify.ibm.com/verify/reference/getfidoregistrations_v20user.getFIDO2Registrations("enabled=true").fido2[0].enabledResultado:
trueuser.getFIDO2RegistrationByID($id)Função para obter o registro do usuário atual no FIDO2 com o ID $id.user.getFIDO2RegistrationByID("e8bf1dac-8245-452b-b7c4-8a700a1eb078").fido2[0].idResultado:
e8bf1dac-8245-452b-b7c4-8a700a1eb078user.getDynamicGroups()Função para obter os grupos dinâmicos do usuário atual. A função retorna a lista de grupos dinâmicos do usuário como um objeto JSON. user.getDynamicGroups().resources[0].nameResultado :
Security department manager- Funções de gerenciamento de usuários
As seguintes funções estão disponíveis no CELx caso seja necessário realizar operações de leitura, criação e atualização em relação aos usuários do Cloud Directory.
A resposta dessas funções é um objeto `map`, conforme definido abaixo. Isso permite flexibilidade para realizar o tratamento de erros na função CELx.errorUma string vazia significa que a operação foi bem-sucedida.{ "result": <result of the operation>, "error": <error message, in case of failures> }Sintaxe Descrição Exemplos findUsers($filter)A função retorna uma lista de usuários que correspondem ao filtro especificado. $filter: String que define os critérios de correspondência no formato definido na API GET Users. É aplicado um limite máximo de 10 usuários para a resposta da pesquisa.Se nenhum usuário for encontrado, será retornada uma lista vazia.
findUsers('emails ew "@jke.com"')findUsers($filter, $attributes)A função retorna uma lista de usuários que correspondem ao filtro especificado. Cada usuário correspondido retorna os atributos especificados no $attributesargumento.$filter: A sequência de caracteres que define os critérios de correspondência.$attributes: A matriz de strings de ` scimNames ` que deve ser retornada no resultado.Consulte o formato dos parâmetros de consulta definido na API GET Users. É aplicado um limite máximo de 10 usuários para a resposta da pesquisa.
Se nenhum usuário for encontrado, será retornada uma lista vazia.
findUsers('emails ew "@jke.com"', ["emails", "name.givenName"])findUsers($filter, $attributes, $count)A função retorna uma lista de usuários que correspondem ao filtro especificado, com um limite máximo de $count. Cada usuário correspondido retorna apenas os atributos especificados no $attributesargumento.$filter: A sequência de caracteres que define os critérios de correspondência.$attributes: Uma matriz de strings do tipo ` scimNames ` que deve ser retornada no resultado.$count: Número inteiro para especificar o número máximo de usuários a serem retornados, com um limite máximo de 10. Qualquer valor acima de 10 é ignorado e definido como 10. Consulte o formato dos parâmetros de consulta definido na API GET Users.Se nenhum usuário for encontrado, será retornada uma lista vazia.
findUsers('emails ew "@jke.com"', ["emails", "name.givenName"], 3)findUser($filter)A função retorna um único usuário que corresponde ao filtro especificado. $filter: A string que define os critérios de correspondência no formato definido na API GET Users.É retornado um erro se forem encontrados vários usuários correspondentes ou se nenhum usuário for encontrado.
findUser('emails eq "jessica@jke.com"')findUser($filter, $attributes)A função retorna um único usuário que corresponde ao filtro especificado. O usuário retorna apenas os atributos especificados no $attributesargumento.$filter: String que define os critérios de correspondência.$attributes: Matriz de strings com os valores ` scimNames ` que devem ser retornados no resultado. Consulte o formato dos parâmetros de consulta definido na API GET Users.É retornado um erro se forem encontrados vários usuários correspondentes ou se nenhum usuário for encontrado.
findUser('emails eq "jessica@jke.com"', ["emails", "name.givenName"])getUser($uid)$uidA função retorna o usuário associado ao. É retornado um erro se o usuário não existir.getUser("504K8664N6")createUser($m)A função cria um usuário com os valores de atributos especificados. $m: Uma tabela com o ID/nome do atributo e o valor desejado pelo usuário.Os IDs dos atributos podem ser encontrados na resposta da API de Atributos GET. O ID e o nome do atributo podem ser usados indistintamente.
Os valores dos
emailatributos eusernamesão obrigatórios. Os demais valores são opcionais.Para definir a senha do novo usuário, inclua uma propriedade em $m com o nome
passworde a senha em texto simples como valor.Se a operação for bem-sucedida, o objeto SCIM do usuário criado é retornado em
result.createUser({'3':'jessica@jke.com', 'userName':'Jessica', '3f31edcf-19e8-46a4-b87e-e50c25dc1358':'Manager', 'hobbies':['Reading', 'Swimming'], '6': 'Jessica', '7': 'Doe'})createUser($m, $opts)A função cria um usuário com os valores de atributos especificados e opções adicionais. $m: Uma tabela com o ID/nome do atributo e o valor desejado pelo usuário.$opts: Um mapa das opções adicionais que podem ser especificadas ao criar um usuário.Os IDs dos atributos podem ser encontrados na resposta da API de Atributos GET. O ID e o nome do atributo podem ser usados indistintamente.
Os valores dos
emailatributos eusernamesão obrigatórios. Os demais valores são opcionais. Para definir a senha do novo usuário, inclua uma propriedade em$mcom o nomepassworde a senha em texto simples como valor.Atualmente, as seguintes propriedades são permitidas em $opts:
- notifyType : A propriedade especifica o tipo de notificação a ser enviada ao usuário. O valor padrão é
EMAIL. - notifyPassword : Booleano para indicar se a senha do usuário é incluída na notificação enviada a ele. O valor padrão é
true. Este atributo não se aplica senotifyTypeestiver definido comoNONE. - notifyManager : Booleano que indica se a notificação deve ser enviada ao gerente do usuário (caso haja um definido) quando a senha do usuário for definida ou alterada. O valor padrão é
false. Este atributo não se aplica senotifyTypeestiver definido comoNONE. - acceptInitialPassword : Se definido como true, o usuário não é obrigado a alterar a senha no primeiro login.
Se a operação for bem-sucedida, o objeto SCIM do usuário criado é retornado em
result.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)A função atualiza o usuário indicado com os valores de atributos especificados.
$uid: O ID do usuário a ser atualizado.$m: Uma tabela com o ID/nome do atributo e o valor desejado pelo usuário.Os IDs dos atributos podem ser encontrados na resposta da API de Atributos GET. O ID e o nome do atributo podem ser usados indistintamente.
Uma atualização bem-sucedida retorna
successuma string como resultado. O objeto do usuário não é retornado.updateUser('6050007SGF', {'3':'jessica@redbank.com', '3f31edcf-19e8-46a4-b87e-e50c25dc1358':'President', 'mobile_number': '502513585', 'work_country': 'Singapore'})- notifyType : A propriedade especifica o tipo de notificação a ser enviada ao usuário. O valor padrão é
- Credencial de origem de identidade
- Quando um usuário faz login no Verify, os atributos das credenciais da fonte de identidade são adicionados à sessão de login e podem ser acessados em uma função personalizada. Considere que o usuário efetue login com um provedor de identidade federado SAML e a asserção SAML contenha uma instrução de atributo que é chamada de
userRolese ela seja configurada comomarketingehelpdesk.O atributoidsuserestá disponível como um mapa com uma chave de sequência e um valor de matriz de sequência. Por exemplo,{ "userRoles": ["marketing", "helpdesk"], "displayName": ["Jessica J. Hill"], "phone": ["+12324321234"], "employeeId": "eid1234" }Sintaxe Descrição Exemplos idsuser.$propertyAcesse $property. O valor emidsuseré sempre uma matriz de sequências.idsuser.userRoles[1]Resultado:
helpdeskidsuser.getValue($property)Retorna o valor de $propertycomo uma sequência. Se a matriz de valor tiver várias entradas, o primeiro item será retornado. Se o$propertynão existir, uma sequência vazia será retornada.idsuser.getValue('userRoles')Resultado:
"Marketing"idsuser.getValues($property)Retorna todos os valores de $propertycomo uma matriz de sequência. Se o$propertynão existir, um objetonilserá retornado.idsuser.getValues('userRoles')Resultado:
["Marketing", "helpdesk]" - Contexto de solicitação de HTTP
Quando um usuário faz login no IBM Verify, o contexto da solicitação recebida HTTP pode ser acessado em uma função personalizada. Se o usuário efetuar login com um fluxo OAuth, e o cliente enviar informações
client-ipeuser-agent,requestContextpoderá extrair as informações. Ele pode ser usado para chamar um terminal externo para determinar a pontuação de risco para o usuário.requestContextestá disponível como um mapa com uma chave de sequência e um valor de matriz de sequência. Por exemplo,{ "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"] }Tabela 1. HTTP contexto da solicitação Sintaxe Descrição exemplo requestContext.$propertyAcesse $property. O valor emrequestContexté sempre uma matriz de sequências.requestContext.devicePlatform[1]Resultado:
MACOSrequestContext.getValue($property)Retorna o valor de $propertycomo uma sequência. Se a matriz de valor tiver várias entradas, o primeiro item será retornado. Se o$propertynão existir, uma sequência vazia será retornada.requestContext.getValue('x-forwarded-for')Resultado:
116.15.12.181requestContext.getValues($property)Retorna todos os valores de $propertycomo uma matriz de sequência. Se o$propertynão existir, um objeto inexistente será retornado.requestContext.getValues('x-forwarded-for')Resultado:
["116.15.12.181"]- Contexto de atributo
- O objeto de contexto contém pares de chave e valor de determinadas propriedades do atributo que podem ser usadas ao escrever funções. Os valores dessas propriedades são válidos apenas no contexto da consulta desse atributo. Este objeto pode ser acessado com a chave
ctx.As propriedades a seguir estão disponíveis com o objeto de contexto:Sintaxe Descrição Exemplos ctx.currentValueAcesse o valor do atributo avaliado antes de executar esta função. O tipo de dados desse valor é especificado na configuração do atributo. Se o valor não puder ser exibido em cascata para o tipo de dados, esse valor será configurado como nulo. ctx.currentValue.toUpper
Operadores padrão
+, -, *, /, >, <. O + pode ser usado para concatenar sequências.| Operador | Descrição | Exemplos |
|---|---|---|
== |
Comparação de igualdade |
|
!= |
Comparação de desigualdade |
|
|| |
Comparação lógica OR |
|
&& |
Comparação lógica AND |
|
[ ] |
Acesso ao mapa |
|
+ |
Concatenação e inclusão, dependendo do tipo |
|
- |
Subtração |
|
* |
Multiplicação |
|
/ |
Divisão |
|
> |
Condição de maior que |
|
< |
Condição de menor que |
|
>= |
Maior que ou igual a |
|
<= |
Menor que ou igual a |
|
? |
Ternário, se operador |
|
Funções Padrão
| Sintaxe | Descrição | Exemplos |
|---|---|---|
$string.contains($fragment) |
Verifica se $fragmento está presente em $string. |
Resultado: true |
$string.endsWith($fragment) |
Verifica se $string termina com $fragment. |
Resultado: false |
$string.matches($regex) |
Verifica se o $regex corresponde ao padrão em $string. |
Resultado: false |
$string.toUpper() |
Converte $string em maiúsculas. |
Resultado: HELLO |
$string.toLower() |
Converte $string em minúsculas. |
Resultado: hello |
$string.base64Encode() |
Base64 codifica $string. |
Resultado: aGVsbG8= |
$string.base64Decode() |
Base64 decodifica $string. |
Resultado: hello |
$string.base64URLEncode() |
Base64URL codifica $string. |
Resultado:
|
$string.base64URLDecode() |
Base64URL decodifica $string. |
Resultado:
|
$string.size() |
Tamanho do $string |
Resultado: 5 |
$string.substring($begin,$end) |
Retorna a sequência entre $begin index (including) e $end index (excluding). |
Resultado: ell |
$string.split($delim) |
Retorna a matriz de sequências que são divididas pelo $delim. |
Resultado: ["h","llo"] |
$string.replaceAll($old,$new) |
Substitui todas as ocorrências de $old por $new. |
Resultado: heppo |
$string.matchAndReplaceAll($regex, $newStr) |
Substitui todas as correspondências de $regex por $newStr. |
Resultado: some-text |
$string.indexOf($str) |
Retorna o índice da primeira ocorrência de $str. |
Resultado: 2 |
$string.lastIndexOf($str) |
Retorna o índice da última ocorrência de $str. |
Resultado: 3 |
| Sintaxe | Descrição | Exemplos |
|---|---|---|
$values.size() |
Tamanho da lista $values |
Resultado:
|
$values.filter(x, $condition) |
Filtra $values por $condition. |
Resultado:
|
$values.all(x, $condition) |
Verifica se todos os $values atendem a $condition. |
Resultado:
|
$values.exists(x, $condition) |
Verifica se algum valor atende a $condition. |
Resultado:
|
$values.exists_one(x, $condition) |
Verifica se exatamente um valor atende a $condition. |
Resultado:
|
$values.map(x, $op) |
Executa $op em cada valor. |
Resultado:
|
stringToJson($s) |
Converte a string $s em uma matriz JSON. |
Resultado:
|
jsonToString($json) |
Converta a lista $json em uma sequência. |
Resultado:
|
joinStrings($values, $s) |
Junte as sequências na lista $values com o separador $s. |
Resultado:
|
$values.flatten() |
Converte uma lista de listas $values em uma única lista. |
Resultado:
|
{
idsuser: {
"attr1":"value1",
"attr2":"value2"
}
}em seguida, para a função idsuser.exists(x, $condition), x é [ "attr1", "attr2" ].| Sintaxe | Descrição | Exemplos |
|---|---|---|
sha256($value) |
Calcula o valor do hash sha256 para a sequência especificada. O resultado é uma representação em forma de string de um valor hexadecimal. |
Resultado:
|
sha512($value) |
Calcula o valor do hash sha512 para a sequência especificada. O resultado é uma representação em forma de string de um valor hexadecimal. |
Resultado:
|
hmacSha1($value, $key) |
Calcula o valor HMAC-SHA1 com a chave $key para a sequência determinada. O resultado é uma representação em forma de string de um valor hexadecimal. |
Resultado: |
| Sintaxe | Descrição | Exemplos |
|---|---|---|
base64ToHex($value) |
Converte a string $value do tipo " base64-encoded " em um valor hexadecimal. |
Resultado:
|
hexToBase64($value) |
Converte o valor hexadecimal $value em uma string do tipo ` base64-encoded `. |
Resultado:
|
base64URLEncodedToHex($value) |
Converte a string $value do tipo " base64URL-encoded " em um valor hexadecimal. |
Resultado:
|
hexToBase64URLEncoded($value) |
Converte o valor hexadecimal $value em uma string do tipo ` base64URL-encoded `. |
Resultado:
|
| Sintaxe | Descrição | Exemplos |
|---|---|---|
has($m.$p) |
Verifique se o mapa $m contém a propriedade $p. |
Resultado:
|
has($m, $p) |
Verifica se o mapa $m contém a propriedade $p. Isso é útil para nomes de propriedades que contêm caracteres especiais (por exemplo, pontos). |
Resultado:
|
jsonToString($m) |
Converta o mapa $m em uma string |
Resultado:
|
stringToJson($s) |
Converte a sequência de caracteres $s em um mapa. |
Resultado:
|
jsonToFormURLEncoded($m, $doUrlEncode) |
Converte o mapa $m em um formulário. Se $doUrlEncode estiver definido como true, o formulário é codificado em formato ` URL `. |
Resultado:
|
$m.put($k, $v) |
Inserir a chave $k do tipo string com o valor $v do tipo object no mapa $m. $v$kSe o mapa $m já continha um valor para a chave, o valor antigo é substituído pelo novo valor. |
Resultado: "{"hello": "world", "key1": "value1"} |
$m.putAll($v) |
Inserir o conteúdo do mapa $v no mapa $m. $v$vSe o mapa $m já continha um valor para uma chave presente no mapa, o valor antigo no mapa $m é substituído pelo valor do mapa. |
Resultado: "{"hello": "world", "key1": "value1", "test": true} |
$m.remove($k) |
Remove o mapeamento da chave $k do tipo string do mapa $m , caso exista. |
Resultado: {"hello": "world"} |
$m.removeAll($l) |
Remove todos os mapeamentos da lista de chaves $l do mapa $m , caso existam. |
Resultado: {"hello": "world"} |
exists função List.idsuser.exists(x, x == "ext:idsource_attr1")Ela retorna true se a propriedade existe e false caso contrário.| Sintaxe | Descrição | Exemplos |
|---|---|---|
now |
Retorna um objeto de registro de data e hora do horário atual. |
Resultado: "2021-08-17T08:24:58Z" |
timestamp($s) |
Retorna um objeto de data e hora convertendo a string de entrada $s de acordo com RFC3339. |
Resultado:
|
$t.getDate() |
Retorna o dia do mês a partir do registro de data e hora $t como uma indexação baseada em um, de número inteiro. |
Resultado: 17 |
$t.getDayOfMonth() |
Retorna o dia do mês a partir do registro de data e hora $t como uma indexação baseada em zero, de número inteiro. |
Resultado: 16 |
$t.getDayOfWeek() |
Retorna o dia da semana a partir do registro de data e hora $t como uma indexação baseada em zero, de número inteiro, para domingo. |
Resultado: 2 |
$t.getDayOfYear() |
Retorna o dia do ano a partir do registro de data e hora $t como uma indexação baseada em zero, de número inteiro. |
Resultado: 228 |
$t.getMonth() |
Retorna o mês a partir do registro de data e hora $t como uma indexação baseada em zero, de número inteiro. |
Resultado: 7 |
$t.getFullYear() |
Retorna o ano a partir do registro de data e hora $t como um número inteiro. |
Resultado: 2021 |
$t.getHours() |
Retorna as horas do carimbo de data/hora $t como um número inteiro. |
Resultado: 8 |
$t.getMinutes() |
Retorna os minutos a partir do registro de data e hora $t como um número inteiro. |
Resultado: 24 |
$t.getSeconds() |
Retorna os segundos a partir do registro de data e hora $t como um número inteiro. |
Resultado: 58 |
$t.getMilliseconds() |
Retorna os milissegundos a partir do registro de data e hora $t como um número inteiro. |
Resultado: 642 |
int($t) |
Converte o carimbo de data/hora int64 em segundos desde a época UNIX®. |
Resultado: 1629188698 |
duration($d) |
A duração $d deve ser dada como uma sequência que termina com "s", o que denota a duração em segundos. |
Resultado: "2021-08-17T09:24:58Z" |
formatTime($t, $s) |
Retorna o registro de data e hora $t no formato $s. É $s necessário usar a data de referência "Segunda-feira, 02-January-06 15:04:05 MST" no formato desejado. |
Resultado:
|
| Sintaxe | Descrição | Exemplos |
|---|---|---|
encodeURI($uri) |
Retorna uma string que representa a string $uri fornecida, codificada como um URI. Este método escapa todos os caracteres, exceto: A-Z a-z 0-9 ; , / ? : @ & = + $ - _ . ! ~ * ' ( ) #. |
Resultado: "test.html?name=J%C3%BCrgen&car=audi" |
decodeURI($uri) |
$uriRetorna uma string que representa a versão decodificada do URI codificado. |
Resultado: "test.html%3Fname%3DJ%C3%BCrgen%26car%3Daudi" |
encodeURIComponent($uri) |
Retorna uma string que representa a string $uri fornecida, codificada como um componente de URI. Este método escapa todos os caracteres, exceto: A-Z a-z 0-9 - _ . ! ~ * ' ( ). |
Resultado: "test.html%3Fname%3DJ%C3%BCrgen%26car%3Daudi" |
decodeURIComponent($uri) |
$uriRetorna uma string que representa a versão decodificada do componente URI codificado. |
Resultado: "test.html?name=Jürgen&car=audi" |
Funções UUID
| Sintaxe | Descrição | Exemplos |
|---|---|---|
genUUID() |
Gera um UUID com base na RFC 4122 e nos Serviços de Autenticação e Segurança do DCE ( 1.1: ). |
Resultado: 4eb1a3f3-5461-4b91-8d69-69e25f2a1b6a |
Funções de tipo e conversão
| Sintaxe | Descrição | Exemplos |
|---|---|---|
type($value) |
Retorna o tipo de $value. |
Resultado:
Resultado: "string" |
bool($string) |
Converte a string $string em um valor booleano. Os valores válidos para true são "true", "True", e "TRUE".Os valores válidos para |
Resultado: true
Resultado: false |
bytes($string) |
Converte a sequência de caracteres $string em bytes. |
Resultado: "aGVsbG8=" |
double($value) |
Converte o valor $value em um número do tipo double. O tipo $value pode ser um dos seguintes: int, uint ou string. |
Resultado: 2.5
Resultado:
|
int($value) |
Converte o valor $value em um inteiro. O tipo $value pode ser um dos seguintes: double, uint, string, enum ou timestamp. Se for fornecido um carimbo de data/hora, o valor retornado é o segundo em relação à Época d Unix. |
Resultado:
Resultado:
Resultado: 123
Resultado: 1742801032 |
uint($value) |
Converte o valor $value em um inteiro sem sinal. O tipo $value pode ser um dos seguintes: double, int ou string. |
Resultado: 3
Resultado: 123 |
string($value) |
Converte o valor $value em uma string. O tipo $value pode ser um dos seguintes: bool, int, uint, double, bytes, timestamp ou duration. Se for fornecida uma duração, o valor é convertido em segundos e frações de segundo, com o sufixo "s". Se for fornecido um carimbo de data/hora, o valor é convertido para o formato RFC3339. |
Resultado:
Resultado: "1234"
Resultado: "hello"
Resultado: "60.1s"
Resultado: "2025-03-24T07:42:51Z" |
Cliente HTTP
- O token do Cabeçalho de autorização deve ser gerado pelo consumidor. Por exemplo, ele pode ser uma chave de API de longa duração que é integrada à função.
| Sintaxe | Descrição | Exemplos |
|---|---|---|
hc.Get($url, $headers) |
Retorna o código de status, os cabeçalhos da resposta e o corpo da resposta. O corpo da resposta será retornado como um objeto JSON se o tipo de conteúdo for application/json ou como uma string para qualquer outro tipo de conteúdo.
|
Resultado:
|
hc.GetAsString($url, $headers) |
Retorna a resposta como uma sequência serializada. $url: URL do terminal da API deve ser um objeto $headers: JSON de URL integral no formulário {"headerName":"headerVal"}. |
Resultado:
|
hc.GetAsJson($url, $headers) |
Analisa a resposta como um objeto JSON. $url: URL do terminal da API deve ser um objeto $headers: JSON de URL integral no formulário {"headerName":"headerVal"}. |
Resultado:
|
hc.Post($url, $headers, $body) |
Retorna o código de status, os cabeçalhos de resposta e o corpo de resposta. O corpo de resposta será retornado como um objeto JSON se o tipo de conteúdo for application/json ou como uma sequência para qualquer outro tipo de conteúdo.
|
Resultado:
|
hc.Patch($url, $headers, $body) |
Retorna o código de status, os cabeçalhos da resposta e o corpo da resposta. O corpo da resposta é retornado como um objeto JSON se o tipo de conteúdo for application/json ou como uma string para qualquer outro tipo de conteúdo.
|
Resultado:
|
hc.Put($url, $headers, $body) |
Retorna o código de status, os cabeçalhos da resposta e o corpo da resposta. O corpo da resposta será retornado como um objeto JSON se o tipo de conteúdo for application/json ou como uma string para qualquer outro tipo de conteúdo.
|
Resultado: {"statusCode": "200", "responseHeaders": {"header": ["value1", "value2"]}, "responseBody": {"message": "success"}} |
hc.Delete($url, $headers) |
Retorna o código de status, os cabeçalhos da resposta e o corpo da resposta. O corpo da resposta será retornado como um objeto JSON se o tipo de conteúdo for application/JSON, ou como uma string para qualquer outro tipo de conteúdo.
{"headerName":"headerVal"} |
Resultado:
|
hc.Opts($options) |
$options: Oito sinalizações são suportadas atualmente:
hc, portanto, GetAsJSON e GetAsString podem ser chamadas. |
|
$protocol://$host[:$port]O endereço URL do endpoint da API fornecido ao cliente HTTP deve ser um endereço URL completo no formato.- O
$protocoldeve ser 'http' ou 'https'. - O nome
$hostdeve ser um nome de domínio totalmente qualificado (FQDN). Não são permitidos endereços IP. - O número
$portda porta é opcional. As seguintes portas são compatíveis com o cliente HTTP. O uso de qualquer outra porta resulta em um tempo limite.- Portas 80, 443 e 8088
- Intervalo de portas 7000-7050
- Intervalo de portas 8000-8050
O armazenamento em cache de resposta HTTP é ativado por padrão para chamadas GET (GetAsString e GetAsJSON) com uma validade de cache padrão de 1 minuto. Ele é desativado por padrão para chamadas POST. Para substituir as configurações padrão para o armazenamento em cache de resposta do cliente HTTP, a sinalização cache deve ser incluída no hc.Opts com o valor de true ou false. O tempo de vida do cache é configurado para 60 segundos por padrão. Para substituir o tempo de vida do cache padrão, a sinalização cacheExpiry deve ser incluída no hc.Opts com o valor em segundos, até um máximo de 3.600 segundos (uma hora).
Risco adaptativo
Use as funções de risco de acesso adaptativo para acessar o nível de risco de sessão do usuário atual e os dados de autorização associados.
Uma política de acesso adaptativo deve ser avaliada pelo menos uma vez na sessão antes de usar o atributo customizado para garantir que os dados sejam preenchidos, caso contrário, o valor “NOT_AVAILABLE” será retornado.
As funções de risco do Acesso Adaptativo permitem acessar as condições da política de acesso correspondentes exibidas no Editor de Políticas, conforme descrito em Gerenciamento de regras de política do Acesso Adaptativo.
Os detalhes dos indicadores de risco estão descritos na seção “Indicações de risco ”.
Os indicadores-chave dos dados de risco são estruturados como JSON e podem ser vistos no exemplo a seguir. Essa estrutura JSON pode ser acessada usando a função risk.getAdaptiveSessionData().
A resposta de dados de risco adaptativo completo que está relacionada com a sessão do usuário pode ser acessada usando a função risk.getRawAdaptiveSessionData() .
{
"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"
}
| Sintaxe | Descrição | Exemplos |
|---|---|---|
risk.getAdaptiveSessionLevel() |
A função retorna o nível de risco adaptativo da sessão do usuário. |
Resultado:
|
risk.getAdaptiveSessionData() |
Retorna uma matriz JSON dos dados de risco adaptativo relacionados à sessão do usuário. Propriedades que possuem o prefixo is retornam um valor booleano. Todas as outras retornam uma sequência. |
Resultado: "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) |
A função retorna a propriedade $p específica do risk.getAdaptiveSessionData(). |
Resultado: true
Resultado:
|
string.Por Exemplo:
Para retornar um valor de string do risk_score para avaliação em uma política de acesso, ele deve primeiro ser convertido para uma string.
string(risk.getRawAdaptiveSessionData()[1].message.pinpoint_assessment.risk.risk_score)
Para realizar uma operação de matemática ou lógica ou avaliação em uma regra avançada, um número JSON deve primeiro ser difundido para um int
int(risk.getRawAdaptiveSessionData()[1].message.pinpoint_assessment.risk.risk_score) > 900ou avaliado como um duplo risk.getRawAdaptiveSessionData()[1].message.pinpoint_assessment.risk.risk_score > 900.0
Aplicativo
Para determinados casos de uso (provisionamento e reconciliação), o app objeto está disponível para uso nas regras do CELx. Este objeto representa o JSON do aplicativo que está sendo usado para a sincronização de contas.
app objeto pode ser tratado como um mapa por si só na regra e também possui os seguintes métodos auxiliares.| Sintaxe | Descrição | Exemplos |
|---|---|---|
app.getSupportingData() |
Retorna os dados de apoio do aplicativo. |
Resultado:
|
OAuth
| Sintaxe | Descrição | Exemplos |
|---|---|---|
oauth.GetBearerToken($url, $clientId, $clientSecret) |
$clientIdA função realiza uma chamada ao endpoint $url de token especificado utilizando o tipo de concessão `client_credentials`, fornecendo o ` clientId ` e o ` clientSecret$clientSecret `, e retorna o token de acesso em caso de sucesso. |
Resultado:
|
Funções do JWT
| Sintaxe | Descrição | Exemplos |
|---|---|---|
jwt.sign($payload, $headers) |
A função gera um token JSON da Web (JWT) assinado. A função recebe dois parâmetros:
Nota: Comportamento padrão:
|
Resultado:
|
Funções de depuração
As funções de depuração podem ser usadas para avaliar uma expressão e gerar um registro de rastreamento ao mesmo tempo. O log de rastreamento será gerado se uma regra for executada com o modo de rastreamento ativado. Para obter mais informações sobre como ativar o modo de rastreamento e visualizar os registros de rastreamento, consulte as configurações de rastreamento nas seções “Criação de um fluxo” e “Gerenciamento da visualização de rastreamento ”.
| Sintaxe | Descrição | Exemplos |
|---|---|---|
debug($expr, $logString) |
$logStringAvalia a expressão $expr e gera o log de depuração.A função recebe dois parâmetros:
|
Resultado: jke.comTambém será gerado o seguinte registro de rastreamento: " |
debug($expr, $logString, $metadata) |
Avalia a expressão $expr e gera o log $logString de depuração com os metadados personalizados adicionais.A função recebe três parâmetros:
|
Resultado: jke.comTambém será gerado o seguinte registro de rastreamento: "
The email domain is jke.com" com os seguintes campos de metadados:
|
Funções de cache
As funções de cache podem ser usadas para utilizar o cache no serviço Rule. Existem dois tipos de funções de cache: baseadas em sessão e não baseadas em sessão. As funções de cache baseadas em sessão utilizam session, enquanto as funções de cache não baseadas em sessão utilizam cache. Os valores armazenados no cache por meio das funções de cache baseadas em sessão estão vinculados a uma sessão do usuário.
O cache geral (de sessão e fora de sessão) tem um limite máximo de tamanho. Esse limite pode variar de acordo com a configuração do locatário. Quando o cache estiver cheio, qualquer tentativa de adicionar uma entrada ao cache resultará em um erro.
{
"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
}
| Sintaxe | Descrição | Exemplos |
|---|---|---|
session.Set($key, $value $ttlSec) |
Armazena um valor vinculado à sessão do usuário no cache. Esta função recebe três parâmetros:
|
Resultado: {"result":{"isSuccessful":true}} |
session.Get($key) |
Obtém o valor associado à sessão do usuário armazenado $key no cache. |
Resultado:{"result":{"isSuccessful":true, "value": "user1@web.com"}} |
session.Delete($key) |
Remove do cache o valor associado à sessão do usuário com o $key . |
Resultado: {"result":{"isSuccessful":true}} |
session.Exists($key) |
Verifica se o item $key vinculado a uma sessão do usuário existe no cache. |
Resultado: {"result":{"isSuccessful":true, "value":"true"}} |
session.GetAndDelete($key) |
$key Obtém o valor associado à sessão do usuário no cache e o remove do cache. |
Resultado: {"result":{"isSuccessful":true, "value": "user1@web.com"}} |
| Sintaxe | Descrição | Exemplos |
|---|---|---|
cache.Set($key, $value $ttlSec) |
Armazena um valor no cache. Esta função recebe 3 parâmetros:
|
Resultado: {"result":{"isSuccessful":true}} |
cache.Get($key) |
Recupera o valor armazenado $key no cache. |
Resultado:{"result":{"isSuccessful":true, "value": "DunderMifflin"}} |
cache.Delete($key) |
Remove o valor com o $key do cache. |
Resultado: {"result":{"isSuccessful":true}} |
cache.Exists($key) |
Verifica se o item $key existe no cache. |
Resultado: {"result":{"isSuccessful":true, "value":"true"}} |
cache.GetAndDelete($key) |
Obtém o valor armazenado $key no cache e o remove do cache. |
Resultado: {"result":{"isSuccessful":true, "value": "DunderMifflin"}} |
| Erro | Resultado |
|---|---|
| O comprimento da chave excede o limite |
|
| O comprimento do valor excede o limite |
|
| A chave não foi encontrada ao tentar recuperá-la do cache |
|
| Quando o limite do cache é excedido |
|
Funções secretas
Use as funções de segredos para acessar segredos existentes.| Sintaxe | Descrição | Exemplos |
|---|---|---|
secrets.get($group, $name) |
Obter o segredo com o grupo $group e o nome especificados $name |
secrets.get("apiKeys", "testKey")Resultado: <the testKey secret in the apiKeys group> |
secrets.get($name) |
$nameObtenha o segredo com o nome especificado. O grupo do segredo será o grupo padrão "default". |
secrets.get("testKey")Resultado: <the testKey secret in the default group> |