O IDaaS possui um mecanismo de expressões integrado que transforma atributos de usuário antes do envio a aplicativos ou provedores de identidade. Use expressões em aplicativos SAML e OpenID Connect (OIDC) para adicionar ou modifique parâmetros nas informações de usuário retornadas — por exemplo, para concatenar campos, avaliar condições ou reformatar valores. Você também pode usar expressões ao configurar mapeamentos de campos para sincronização com provedores de identidade (IdP).
Para mais informações, consulte Regras de mapeamento de declaração de atributos SAML, Regras de mapeamento de valores de extensão id_token OIDC e Gerencie campos de conta.
Uma expressão consiste em duas partes:
Modelos — fontes de dados, incluindo User (contas do IDaaS) e AppUser (contas de aplicativo)
Funções — operações aplicadas aos valores dos campos do modelo
Modelos
User
O modelo User representa contas do IDaaS. Referencie campos usando user.<fieldId>, como user.username ou user.lockExpireTime.
|
Nome de exibição do campo |
ID do campo |
Tipo de dado |
Obrigatório |
Único |
Permissões do usuário |
Descrição |
|
Account ID |
userId |
String |
Não |
Sim |
Visível |
O ID do usuário. |
|
Username |
username |
String |
Sim |
Sim |
Visível |
O nome de usuário. |
|
Display name |
displayName |
String |
Não |
Não |
Editável |
O nome de exibição do usuário. |
|
|
|
String |
Não |
Sim |
Editável |
O endereço de e-mail. |
|
Mobile phone |
phoneNumber |
Number |
Não |
Sim |
Editável |
O número de telefone. |
|
Phone area code |
phoneRegion |
Number |
Não |
Não |
Editável |
O código de área. Para a China, o valor é |
|
External ID |
userExternalId |
String |
Não |
Sim |
Visível |
O ID externo do usuário. |
|
Source type |
userSourceType |
String |
Não |
Não |
Visível |
Valores válidos: |
|
Source ID |
userSourceId |
String |
Não |
Não |
Visível |
O ID da fonte. |
|
Account status |
status |
String |
Não |
Não |
Visível |
Valores válidos: |
|
Description |
description |
String |
Não |
Não |
Visível |
A descrição. |
|
Account expiration time |
accountExpireTime |
Number |
Não |
Não |
Visível |
Timestamp UNIX em milissegundos. |
|
Account registration time |
registerTime |
Number |
Não |
Não |
Visível |
Timestamp UNIX em milissegundos. |
|
Password expiration time |
passwordExpireTime |
Number |
Não |
Não |
Visível |
Timestamp UNIX em milissegundos. |
|
Lock expiration time |
lockExpireTime |
Number |
Não |
Não |
Visível |
Timestamp UNIX em milissegundos. |
|
Creation time |
createTime |
Number |
Não |
Não |
Visível |
Timestamp UNIX em milissegundos. |
|
Update time |
updateTime |
Number |
Não |
Não |
Visível |
Timestamp UNIX em milissegundos. |
Exemplo de JSON do modelo User
{
"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",
"customFieldMap": {
"place": { "fieldName": "place", "fieldValue": "beijing" },
"age": { "fieldName": "age", "fieldValue": "18" }
},
"customFields": [
{ "fieldName": "place", "fieldValue": "beijing" },
{ "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",
"groups": [
{ "groupId": "group_jp6al4sn4n4wjgjxxxxxx", "groupName": "group1", "groupExternalId": "group_jp6al4sn4n4wjgjxxxxxx" },
{ "groupId": "group_vavikcxewkf5h3oxxxxxx", "groupName": "group2", "groupExternalId": "group_vavikcxewkf5h3oxxxxxx" }
]
}
AppUser
O modelo AppUser representa contas de aplicativo. Referencie campos usando appUser.<property>, como appUser.username.
|
Propriedade |
Descrição |
|
username |
O nome de usuário da conta do aplicativo. |
IdP User
Use o modelo IdP User para mapeamentos de campos durante a sincronização com um provedor de identidade. Por exemplo, o campo de localização do escritório no DingTalk é idpUser.work_place. Para consultar os campos disponíveis, verifique a documentação do seu provedor de identidade, como o Documento de Ajuda do DingTalk - Detalhes do Usuário.
Em provedores de identidade OIDC (consulte Anexar um provedor de identidade OIDC), ao usar expressões no recurso de anexação automática, o prefixo idpUser. aplica-se apenas aos campos sub, phoneNumber e email do id_token (por exemplo, idpUser.sub). Para todos os outros campos, use o prefixo idpUser.rawUserInfo. (por exemplo, idpUser.rawUserInfo.aud).
Funções
As funções operam sobre valores dos campos do modelo e estão agrupadas por categoria abaixo.
Funções de string
|
Função |
Assinatura |
Tipo de retorno |
Descrição |
Exemplo |
|
|
Append |
|
String |
Concatena parâmetros em uma nova string. Equivalente a |
|
|
|
Join |
|
String |
Une vários valores de origem em uma única string usando o separador especificado. |
|
|
|
StringReplace |
|
String |
Substitui |
|
|
|
Trim |
|
String |
Remove espaços em branco no início e no fim. |
|
|
|
TrimLeft |
|
String |
Remove apenas espaços em branco iniciais. |
|
|
|
TrimRight |
|
String |
Remove apenas espaços em branco finais. |
|
|
|
ToLower |
|
String |
Converte todo o texto para minúsculas. |
|
|
|
ToUpper |
|
String |
Converte todo o texto para maiúsculas. |
|
|
|
Substring |
|
String |
null |
Retorna a substring de |
|
|
SubstringBefore |
|
String |
null |
Retorna a parte de |
|
|
Split |
|
Array |
Divide uma string em um array de substrings usando o separador especificado. |
|
|
|
Contains |
|
Boolean |
Retorna true se |
|
|
|
StartsWith |
|
Boolean |
Retorna true se |
|
|
|
Equals |
|
Boolean |
Compara duas strings quanto à igualdade. Passe |
|
Funções de condição
|
Função |
Assinatura |
Tipo de retorno |
Descrição |
Exemplo |
|
|
IIF |
|
Any |
Retorna |
|
|
|
IsNull |
|
Boolean |
Retorna true se |
|
|
|
IsNullOrEmpty |
|
Boolean |
Retorna true se |
|
|
|
Coalesce |
|
Any |
null |
Retorna o primeiro parâmetro não vazio. Um valor não vazio não é null e tem comprimento maior que 0. Retorna null se todos os parâmetros estiverem vazios. |
|
|
Or |
|
Boolean |
Retorna true se qualquer condição for verdadeira. |
|
|
|
And |
|
Boolean |
Retorna true somente se todas as condições forem verdadeiras. |
|
|
|
xOr |
|
Boolean |
Aceita exatamente duas condições. Retorna true se apenas uma condição for verdadeira e false se ambas forem iguais. |
|
Funções de array
|
Função |
Assinatura |
Tipo de retorno |
Descrição |
Exemplo |
|
Array |
|
Array |
Combina valores em um array. Os valores podem ser do tipo Object. |
|
|
ArrayAdd |
|
Array |
Adiciona um elemento a um array. |
|
|
ArrayMap |
|
Array |
Cria um novo array extraindo uma propriedade específica de cada objeto em um array. |
|
|
ArrayIndex |
|
Any |
Retorna o elemento no índice |
|
|
ArrayJoin |
|
String |
Une elementos de um array em uma string usando o separador especificado. |
|
Funções de objeto
|
Função |
Assinatura |
Tipo de retorno |
Descrição |
Exemplo |
|
Object |
|
Object |
Cria um objeto a partir de pares chave-valor. Suporta zero ou um número par de parâmetros. |
|
|
ObjectIndex |
|
Any |
Retorna o valor da propriedade especificada. |
— |
|
ObjectToJsonString |
|
String |
Converte um objeto em uma string JSON. |
|
Funções de tempo
|
Função |
Assinatura |
Tipo de retorno |
Descrição |
Exemplo |
|
Now |
|
String |
Retorna a data e hora UTC atuais no formato |
Saída: |
|
CurrentTimeMillis |
|
Number |
Retorna o timestamp UNIX atual em milissegundos. |
— |
Funções de número de telefone
Tanto ExtractPhoneRegion quanto ExtractPhoneNumber usam códigos de país ISO 3166 Alpha-2 (por exemplo, CN, US, TW). Consulte o padrão Códigos de País ISO 3166 para obter a lista completa.
Os parâmetros funcionam da seguinte maneira, dependendo do formato do número de telefone de origem:
Número já com prefixo
+(por exemplo,+86131xxxxx000): passe apenassource. A função extrai o código de área do prefixo.Número com código de área, mas sem prefixo
+(por exemplo,86131xxxxx000): passesource,defaultRegione definaautoAppendPlusSignalcomotrue.Número sem código de área (por exemplo,
131xxxxx000): passesource,defaultRegione definaautoAppendPlusSignalcomofalse.
|
Função |
Assinatura |
Tipo de retorno |
Descrição |
|
ExtractPhoneRegion |
|
String |
Extrai o código de área de um número de telefone. |
|
ExtractPhoneNumber |
|
String |
Extrai o número de telefone sem o código de área. |
Exemplos de ExtractPhoneRegion
|
Formato do número de telefone |
Expressão |
Valor de retorno |
|
|
|
|
|
|
|
|
|
|
|
|
Exemplos de ExtractPhoneNumber
|
Formato do número de telefone |
Expressão |
Valor de retorno |
|
|
|
|
|
|
|
|
|
|
|
|
Funções específicas do SAML
|
Função |
Assinatura |
Tipo de retorno |
Descrição |
Exemplo |
|
SamlArray |
|
Atributo SAML |
Disponível apenas para SSO SAML. Formata um array como um atributo SAML com múltiplos elementos |
|
Expressões comuns
Os exemplos a seguir usam os dados de usuário de amostra abaixo. Copie e adapte essas expressões diretamente.
Dados de usuário de amostra:
user.username:name_001user.displayName:displayname_001user.email:xxxxx@example.comuser.phoneRegion:86user.phoneNumber:333xxxx3333user.groups: dois grupos com IDsgroup_jp6al4sn4n4wjgjxxxxxxegroup_vavikcxewkf5h3oxxxxxx
|
Objetivo |
Expressão |
Saída |
|
Adicionar um domínio ao nome de usuário |
|
|
|
Retornar o e-mail se definido; caso contrário, usar o número de telefone |
|
|
|
Usar um número de telefone padrão quando o campo estiver vazio |
|
|
|
Concatenar o código de área e o número de telefone com um hífen |
|
|
|
Criar uma mensagem de boas-vindas com o nome de exibição |
|
|
|
Mascarar os quatro dígitos centrais do número de telefone |
|
|
|
Extrair o nome de usuário de um endereço de e-mail |
|
|
|
Formatar o campo de e-mail como um array compatível com SCIM |
|
|
|
Obter uma lista de IDs de grupo para um usuário |
|
|