Script LDAP

  • Versão de lançamento: Xanadu
  • Atualizado 1 de ago. de 2024
  • 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

    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:
      Tabela 1. Desabilitação da regra de negócios de usuários do AD
      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()

      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

    É 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

    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 = "";
    }