---
sourceDocument: Segurança da plataforma Yokohama
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/pt-BR/yokohama/platform-security

 Release :

    - yokohama

ft:locale :

    - pt-BR

ft:publication_title :

    - Segurança da plataforma Yokohama

ft:clusterId :

    - psec

bundleId :

    - psec

workflow :

    - Platform


---

# Script LDAP

# Script LDAP {#ariaid-title1}

* Versão de lançamento: Yokohama
* 
* Atualizado 30 de jan. de 2025
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 2 min. de leitura

Crie mapas de transformaçãp personalizados, scripts e regras de negócios para especificar requisitos ao importar dados.
Mapas de transformação personalizados devem incluir scripts de transformação `onStart` e `onAfter`.  
O script `onStart` deve chamar a inclusão de script `LDAPUtils` e iniciar o registro em log. Por exemplo, o mapa de transformação de importação de usuário LDAP tem um script `onStart` que usa este código:

    gs.include ( "LDAPUtils" ) ; var ldapUtils  = new LDAPUtils ( ) ;
    ldapUtils. setLog (log ) ;

O script `onAfter` deve chamar a função `addMembers`. Por exemplo:

    ldapUtils.addMembers (source , target ) ;

## Definição de usuários desabilitados do Active Directory como inativos {#ariaid-title2}

Use o script a seguir para desativar automaticamente os usuários quando o usuário do AD associado estiver desabilitado.

### Antes de Iniciar

Função necessária: administrador

### Por Que e Quando Desempenhar Esta Tarefa

É possível identificar usuários desabilitados do Active Directory verificando o valor do atributo `userAccountControl`. Essa regra será executada sempre que o valor `userAccountControl` mudar e desativar contas de usuário se o Controle de contas de usuário significar uma conta do AD desabilitada.

Use o script a seguir para desativar automaticamente os usuários quando o usuário do AD associado estiver desabilitado.

### Procedimento

1. Configure o formulário do usuário e crie um novo campo de número inteiro chamado Controle de contas de usuário.
2. Adicione o mapeamento de userAccountControl (externo) ao novo campo.
3. Crie uma nova regra de negócios com as seguintes propriedades:  
   {#t_SetDisabledADUsersToInactive__table_uc1_bhs_gq__entry__2}

   | Campo da regra de negócios | valor |
   |-|-|
   | Nome | Desabilitar usuários do AD |
   | Tabela | Usuário \[sys_user\] |
   | Quando | Antes |
   | Condição | current.u_user_account_control.changes() |
   [Tabela 1. Desabilitação da regra de negócios de usuários do AD]

   {#t_SetDisabledADUsersToInactive__table_uc1_bhs_gq}

   O campo Script deve conter o seguinte:  

       var disabledFlag = 2;
       //perform a bitwise comparison on userAccountControl to see if the 2 bit flag is enabled
       if (current.u_user_account_control & disabledFlag) {
         gs.log('Disabling user: ' + current.user_name + 'userAccountControl=' + current.u_user_account_control);
         current.active='false';
         current.locked_out='true';
       }

## Atribuição de valores de campo LDAP {#ariaid-title3}

É possível usar um script para atribuir um valor a qualquer campo para o qual exista um mapeamento de campo.
Por exemplo, para atribuir um valor ao campo sys_user.company, crie um mapa de campo para o campo da empresa e adicione um script de transformação para:  

    company = "Don's Sporting Goods";

## Exclusão de usuários LDAP específicos {#ariaid-title4}

Se não puder filtrar completamente a lista de usuários LDAP usando as propriedades de filtro LDAP, é possível excluir usuários com um script de mapa.
Depois de executar a lógica para identificar um usuário que não deve ser importado, defina o campo user_name como uma cadeia de caracteres vazia e esse usuário não será importado.  

    user_name='';

Uma maneira de identificar usuários para serem filtrados é procurar uma cadeia de caracteres no atributo `distinguishedName`. Por exemplo, este script exclui contas que não estão em uma OU de usuários. Será possível usar este script se houver muitos usuários na OU para incluir na opção LDAP da OU de destino.  

    //vdn is a variable mapped to distinguishedName
    gs.include("LDAPUtils");
    var vdn = source.getElement(this.distinguishedName);
    if (vdn.indexOf('OU=Users')<0) {
      user_name='';
      gs.log('LDAP Import Skipping User: ' + vdn);
    }

Um método mais complexo de filtragem é usar expressões regulares.  

    //vcn is a variable mapped to cn
    //vdn is a variable mapped to distinguishedName
    //c is the regular expression string
    gs.include("LDAPUtils");
    var vdn = source.getElement(this.distinguishedName);
    var vcn = source.getElement(this.cn);
    var c = /^[a-z][a-z][a-z][0-9][0-9][0-9]$/;
    var nvcn = vcn.toLowerCase();
    //test to see if the cn is in the form of 3 letters followed by 3 numbers, only import these
    if (c.test(nvcn)) {
    	user_name = nvcn;
    } else {
    	gs.log("LDAP import rejected username: " + vcn + " for DN: " + vdn);
    	user_name = "";
    }


