Árvore de páginas

CONTEÚDO

01. Visão geral

       O programa btb/btapi910za.p permite realizar o login no Produto Datasul, inicializando o ambiente, configurando as variáveis globais do sistema, validando a senha do usuário e registrando quaisquer erros encontrados neste processo.

02. Considerações Gerais

  • A execução desta API não é de forma persistente, portanto, sua chamada é direta ao próprio programa e não a procedures internas.
  • A API faz a autenticação de usuários internos e externos. O que difere os dois tipos de autenticação é o parâmetro do Código do usuário, onde se o mesmo possuir o caractere “/” (por exemplo: domínio/usuario), subentende-se que é um usuário externo e que deve ser validado no AD via LDAP. Além disso, o usuário externo informado deve existir no cadastrado na extensão de algum usuário. É importante que esse usuário externo consiga logar normalmente no Datasul via login padrão do produto.
  • Por padrão não há controle de abertura de clientes Progress. Mas, caso seja necessário, é disponibilizada uma técnica para este controle.

03. Implementação


Parâmetros

Variável

Tipo do parâmetroTipo do dado

Descrição

usuarioINPUTCHARACTER

Código do usuário ou login AD <domínio>/<usuarioAD>, seguindo o modelo de autenticação definido para o usuário.

senhaINPUTCHARACTER

Senha do usuário no ERP ou senha do usuário no AD, seguindo o modelo de autenticação definido para o usuário.

tt-erros

     cod-erro

     desc-erro

     desc-arq

OUTPUT

TEMP-TABLE

      INTEGER

      CHARACTER

      CHARACTER

Tabela temporária que irá armazenar possíveis erros na autenticação do usuário. 



Definição da temp-table

Define Temp-table tt-erros

    Field cod-erro  As Integer

    Field desc-erro As Character Format "x(256)":U

    Field desc-arq  As Character.


Exemplo de chamada da API (usuário interno)

Run btb/btapi910za.p ( Input "super":U, /* Usuário Interno do produto */
                       Input "super@123":U,
                       Output Table tt-erros).
For Each tt-erros:
    Message "Erro: "
            String(tt-erros.cod-erro) + " - ":U +
            tt-erros.desc-erro
            View-as Alert-box Information.
End.


Exemplo de chamada da API (usuário externo)

Run btb/btapi910za.p ( Input "totvs/fulano":U, /* Usuário externo/rede */
                       Input "senhafulano":U,
                       Output Table tt-erros).
For Each tt-erros:
    Message "Erro: "
            String(tt-erros.cod-erro) + " - ":U +
            tt-erros.desc-erro
            View-as Alert-box Information.
End.


Exemplo de chamada da API com controle de abertura do cliente Progress (usuário interno)

DEFINE VARIABLE hTeste AS HANDLE      NO-UNDO.

IF NOT VALID-HANDLE(hTeste) THEN
	RUN fwk/utils/ValidateClientExec.p PERSISTENT SET hTeste.

// True indica a opção por controlar a abertura de clients Progress
RUN isValidateClientExec IN hTeste (INPUT TRUE).

Run btb/btapi910za.p ( Input "super":U, /* Usuário Interno do produto */
                       Input "super@123":U,
                       Output Table tt-erros).
For Each tt-erros:
    Message "Erro: "
            String(tt-erros.cod-erro) + " - ":U +
            tt-erros.desc-erro
            View-as Alert-box Information.
End.
IF VALID-HANDLE(hTeste) THEN
    DELETE OBJECT hTeste.

Autenticação AD via LDAP UNIX

Importante

Não damos suporte a instalação/configuração do openldap. Caso necessário, solicitar apoio de um especialista no SO em questão.

  • Requisitos:
    • Biblioteca “libldap.so” (encontrada no pacote “openldap”).
    • A máquina em questão deve permitir comunicação com o servidor LDAP, através dos comandos “ldapsearch” ou “ldapwhoami”, é possível confirmar se o pacote “openldap” foi instalado com sucesso e está funcional.

  • Variáveis de ambiente para autenticação UNIX no AD via LDAP :

Variável

Modelo

Descrição

Exemplos
DATASULADSERVER<ip>:<porta>

<ip> : IP do servidor AD.
<porta>: é a porta do servidor AD.

Porta padrão é a 389, mas em alguns casos, principalmente em servidores AD Windows onde a comunicação na porta 389 é limitada e não permite alguns tipos de acesso/leitura, deve-se utilizar a porta alternativa 3268.

DATASULADSERVER=192.168.10.10:389

DATASULADSERVER=192.168.10.10:3268

DATASULCONTEXTDOMAIN<contexto>

<contexto> é o contexto do domínio do AD.

DATASULCONTEXTDOMAIN=dc=teste,dc=lan

DATASULCONTEXTDOMAIN=dc=totvs,dc=com

DATASULCONTEXTDOMAIN=dc=my-domain,dc=com,dc=br

DATASULCONTEXTDOMAIN=dc=jv01,dc=local

DATASULSOARCH<arquitetura>

<arquitetura> é a arquitetura do SO (32bits ou 64Bits).

DATASULSOARCH=32

DATASULSOARCH=64   

 

  • Em algumas implementações de servidor AD, o acesso ou leitura anônima não é possível. Nesses casos, é necessário fornecer um usuário e senha para permitir esse acesso ou leitura. As variáveis de ambiente a seguir são opcionais e devem ser utilizadas apenas quando o servidor AD apresenta essa restrição.

Variável

Modelo

Descrição

Exemplos
DATASULBINDUSER<cn>

<cn> é o Canonical Name do usuário que pode fazer acesso/leitura no AD.

DATASULBINDUSER=CN=Admin,OU=Administradores,OU=Informatica, DC=teste,DC=lan

DATASULBINDUSERPWD<contexto>

<password> é a senha do Canonical Name informado anteriormente.

DATASULBINDUSERPWD=admin@123