Este tópico descreve como usar expressões avançadas de campos da conta no motor de expressões integrado do IDaaS, incluindo descrições dos campos do modelo, descrições das funções e exemplos de referência.
Visão geral
O IDaaS inclui um motor de expressões integrado. Em aplicativos SAML e OIDC, use expressões avançadas para adicionar parâmetros às informações do usuário retornadas. Use expressões quando um aplicativo de destino exigir um parâmetro adicional que precise de transformação, concatenação ou avaliação condicional.
Use expressões também para atribuir valores personalizados a campos ao configurar mapeamentos de campos sincronizados com um provedor de identidade.
Os exemplos de referência mais adiante neste tópico ajudam a entender rapidamente os casos de uso e os métodos das expressões.
Por exemplo, a configuração de SSO OIDC permite estender as informações retornadas do id_token. No campo Extended Value, insira uma expressão avançada como full_phone para atender a um requisito de processamento específico. Para isso, acesse a página de configuração de SSO do aplicativo OIDC. Na área de configuração do campo de extensão id_token, insira a expressão necessária (como full_phone) na caixa de entrada Extended Value.
Para mais informações sobre o uso, consulte Specifications for SAML attribute statement values, OIDC id_token custom field configuration e Gerencie campos.
Uma expressão tem duas partes:
Um modelo, que pode ser User (para uma conta IDaaS) ou AppUser (para uma conta do aplicativo).
Uma função, que representa a lógica de execução.
Modelos
1. User
Referencie os seguintes campos no User model do IDaaS com uma sintaxe como user.username ou user.lockExpireTime.
Field Display Name | Field ID | Data Type | Required | Unique | User Permissions | Descrição |
ID da conta | userId | String | Não | Sim | Visível | O ID do usuário. |
Nome da conta | username | String | Sim | Sim | Visível | O nome do usuário. |
Nome de exibição | displayName | String | Não | Não | Editável | O nome de exibição do usuário. |
String | Não | Sim | Editável | O e-mail. | ||
Número de celular | phoneNumber | Número | Não | Sim | Editável | O número de celular. |
Código de região do telefone | phoneRegion | Número | Não | Não | Editável | O código de região do celular. Por exemplo, o código da China é "86", sem "00" ou "+". |
ID externo | userExternalId | String | Não | Sim | Visível | O ID externo do usuário. |
Tipo de origem | userSourceType | String | Não | Não | Visível | Valores válidos:
|
ID da origem | userSourceId | String | Não | Não | Visível | O ID da origem. |
Status da conta | status | String | Não | Não | Visível | Valores válidos:
|
Descrição | description | String | Não | Não | Visível | Descrição. |
Data e hora de expiração da conta | accountExpireTime | Número | Não | Não | Visível | A data e hora de expiração da conta, como um timestamp UNIX em milissegundos. |
Data e hora de registro | registerTime | Número | Não | Não | Visível | A data e hora de registro da conta, como um timestamp UNIX em milissegundos. |
Data e hora de expiração da senha | passwordExpireTime | Número | Não | Não | Visível | A data e hora de expiração da senha, como um timestamp UNIX em milissegundos. |
Data e hora de expiração do bloqueio | lockExpireTime | Número | Não | Não | Visível | A data e hora de expiração do bloqueio, como um timestamp UNIX em milissegundos. |
Data e hora de criação | createTime | Número | Não | Não | Visível | A data e hora de criação, como um timestamp UNIX em milissegundos. |
Data e hora de atualize | updateTime | Número | Não | Não | Visível | A data e hora da última atualize das informações do usuário, como um timestamp UNIX em milissegundos. |
2. App User
Referencie os seguintes campos no modelo AppUser do IDaaS com uma sintaxe como appUser.username.
|
Propriedade |
Descrição |
|
username |
O nome de usuário da conta do aplicativo. |
3. IdP User
O modelo IdP User se aplica quando os dados são sincronizados com um provedor de identidade. Por exemplo, o campo de local de trabalho do DingTalk é idpUser.work_place.
Para campos específicos, consulte a documentação relevante do provedor de identidade. Por exemplo, consulte DingTalk documentation - User details.
Para um provedor de identidade OIDC (consulte Connect to an OIDC identity provider), ao usar uma expressão para vinculação automática, apenas os campos sub, phoneNumber e email em id_token usam o prefixo idpUser., por exemplo, idpUser.sub. Todos os outros campos devem usar o prefixo idpUser.rawUserInfo., por exemplo, idpUser.rawUserInfo.aud.
Funções
Veja as seguintes funções e exemplos:
Função | Sintaxe | Descrição | Exemplo |
Append | Append(str1, str2, ..., strn) | Concatena os argumentos de entrada em uma nova string. Equivalente a |
|
Join | Join(source1, source2, ..., sourceN, separator) | Concatena vários valores de origem em uma string, usando um separador entre os valores. |
|
Coalesce | Coalesce(source1, source2, ..., sourceN, defaultValue) | Retorna o primeiro argumento de entrada não vazio. Se todos os argumentos estiverem vazios, retorna null. Um valor não vazio não é nulo e tem comprimento maior que 0. |
|
IIF | IIF(condition, whenTrue, whenFalse) | Operação ternária. Retorna valores diferentes com base no resultado da condição: whenTrue se a condição for verdadeira e whenFalse se for falsa. | Exemplo 1:
Exemplo 2:
|
IsNull | IsNull(value) | Retorna true quando o valor é null, ou seja, quando o valor está ausente. | Exemplo 1:
Exemplo 2:
|
IsNullOrEmpty | IsNullOrEmpty(value) | Retorna true quando o valor é null ou uma string vazia. | Exemplo 1:
Exemplo 2:
|
Now | Now() | Retorna uma string com a data e hora UTC atuais no formato yyyy-MM-dd'T'HH:mm:ssXXX. |
|
StringReplace | StringReplace("hello $VariableName", "$VariableName", ReplaceString) | Executa uma substituição simples de string. |
|
Trim | Trim(source) | Remove espaços em branco no início e no fim de uma string de origem. |
|
TrimLeft | TrimLeft(source) | Remove espaços em branco à esquerda de uma string de origem. |
|
TrimRight | TrimRight(source) | Remove espaços em branco à direita de uma string de origem. |
|
ToLower | ToLower(source) | Converte uma string para maiúsculas ou minúsculas. |
|
ToUpper | ToUpper(source) | Converte uma string para maiúsculas. |
|
Substring | Substring(source, fromIndex, endIndex) | Retorna uma substring da string, com índices no intervalo [fromIndex, endIndex].
| Exemplo 1:
Exemplo 2:
Exemplo 3:
|
SubstringBefore | SubstringBefore(source, subString) | Retorna a substring antes da primeira string de destino correspondida da esquerda para a direita na string de origem. Se não houver string de destino, retorna null. Parâmetros:
Valor de retorno: string | Exemplo 1:
|
Array | Array(source1, source2,...) | Combina vários valores em um array. Os valores podem ser do tipo Object. |
|
ArrayAdd | ArrayAdd(Array(), "test") | Adiciona um array a um objeto de array. |
|
ArrayMap | ArrayMap($ArrayObject, __item.ObjectProperty) | Obtém um valor de propriedade de um objeto de array para formar um novo array. | Obtenha os IDs dos grupos aos quais o usuário pertence:
|
ArrayIndex | ArrayIndex(Array(), n) | Obtém um elemento de array por posição, começando em 0. |
|
ArrayJoin | ArrayJoin(Array(), str) | Une um array com uma string. |
|
Object | Object(key1, value1, key2, value2, ...) | Cria um Object a partir de pares chave-valor especificados. Aceita zero ou um número par de argumentos. |
|
ObjectIndex | ObjectIndex(user, "username") | Obtém o valor de uma propriedade especificada de um objeto. | O código |
ObjectToJsonString | ObjectToJsonString(user.groups) | Converte um objeto em uma string json. | - |
Contains | Contains(str1,str2) | Verifica se um valor está incluído, retornando true ou false. | Exemplo 1:
Exemplo 2:
|
Or | Or(true,false,...,true) | Avalia várias condições usando OR. Retorna true se qualquer condição for verdadeira. | Exemplo 1:
Exemplo 2:
Exemplo 3:
|
And | And(true,false,...,true) | Avalia várias condições usando AND. Retorna false se qualquer condição for falsa. | Exemplo 1:
Exemplo 2:
Exemplo 3:
|
xOr | xOr(true,false,...,true) | Exige exatamente duas condições. Retorna false quando ambas são verdadeiras ou ambas são falsas. Retorna true quando uma condição é verdadeira e a outra é falsa. | Exemplo 1:
Exemplo 2:
Exemplo 3:
|
StartsWith | StartsWith(str1, str2) | Verifica se uma string começa com o valor especificado. Aceita apenas dois parâmetros. | Exemplo 1:
Exemplo 2:
|
Split | Split("str1,str2,str3") | Divide uma string e retorna um array. | Exemplo 1:
|
Equals | Equals(str1,str2) | Compara duas strings quanto à igualdade. Equals(str1,str2). Equals(str1,str2,false) diferencia maiúsculas de minúsculas. Equals(str1,str2,true) não diferencia maiúsculas de minúsculas. | Exemplo 1:
Exemplo 2:
Exemplo 3:
|
CurrentTimeMillis | CurrentTimeMillis() | O timestamp UNIX atual em milissegundos. | - |
SamlArray | SamlArray(Array()) | Disponível apenas para SSO SAML. | Entrada:
<saml2:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:type="xsd:string"> group1 group2
|
ExtractPhoneRegion | ExtractPhoneRegion(source, defaultRegion,autoAppendPlusSignal) | Extrai o código de região de um número de celular.
| Exemplo 1: Se o número for
Exemplo 2: Se o número for
Exemplo 3: Se o número for
|
ExtractPhoneNumber | ExtractPhoneNumber(source, defaultRegion,autoAppendPlusSignal) | Extrai o número de celular real sem o código de região.
| Exemplo 1: Se o número for
Exemplo 2: Se o número for
Exemplo 3: Se o número for
|
Exemplos de referência
Cenário | Expressão de exemplo |
Obter o nome de usuário e anexar a string fixa "@example.com". |
|
Retornar o endereço de e-mail quando não estiver vazio. Retornar o número de celular quando o endereço de e-mail estiver vazio. |
|
Usar um número de celular fixo quando o número de celular estiver vazio. |
|
Unir o código de região do telefone e o número de celular com -. |
|
Retornar uma mensagem de boas-vindas personalizada que contenha o nome de exibição. |
|
Ocultar os quatro dígitos centrais de um número de celular com *. |
) |
Extrair o nome de usuário de um endereço de e-mail. |
|
Montar um campo de e-mail no formato de array exigido pela especificação SCIM. |
|
Exemplo de json do modelo de usuário:
{
"customFieldMap": {
"place": {
"fieldName": "place",
"fieldValue": "beijing"
},
"age": {
"fieldName": "age",
"fieldValue": "18"
}
},
"identityProviderUserMap": {
"idp_m2gngriuenktdkxxxxxx": {
"identityProviderId": "idp_m2gngriuenktdkxxxxxx",
"identityProviderType": "ding_talk",
"identityProviderExternalId": "corp_1234xxxxxxx",
"identityProviderUserId": "b2ed5fc0xxxxx"
}
},
"organizationalUnits": [
{
"organizationalUnitId": "ou_sdfadtaaxxxxxx",
"organizationalUnitName": "name_001",
"primary": false
},
{
"organizationalUnitId": "ou_werttxxxxxx",
"organizationalUnitName": "name_002",
"primary": true
}
],
"primaryOrganizationalUnitId": "ou_werttxxxxxx",
"customFields": [
{
"fieldName": "place",
"fieldValue": "beijing"
},
{
"fieldName": "age",
"fieldValue": "18"
}
],
"groups": [
{
"groupId": "group_jp6al4sn4n4wjgjxxxxxx",
"groupName": "group1",
"groupExternalId": "group_jp6al4sn4n4wjgjxxxxxx"
},
{
"groupId": "group_vavikcxewkf5h3oxxxxxx",
"groupName": "group2",
"groupExternalId": "group_vavikcxewkf5h3oxxxxxx"
}
],
"userId": "user_x3zyd6cxxxxxxxxxxxxx",
"username": "name_001",
"displayName": "displayname_001",
"passwordSet": true,
"phoneRegion": "86",
"phoneNumber": "333xxxx3333",
"phoneNumberVerified": true,
"email": "xxxxx@example.com",
"emailVerified": true,
"userExternalId": "b2ed5fc0xxxxxxxxxx",
"userSourceType": "ding_talk",
"userSourceId": "corp_1234xxxxxxx",
"status": "enabled",
"accountExpireTime": "-1",
"passwordExpireTime": "-1",
"registerTime": "1730454581598",
"lockExpireTime": "-1",
"createTime": "1730454582379",
"updateTime": "1733479455307"
}