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âmetro | Tipo do dado | Descrição |
---|---|---|---|
usuario | INPUT | CHARACTER | Código do usuário ou login AD <domínio>/<usuarioAD>, seguindo o modelo de autenticação definido para o usuário. |
senha | INPUT | CHARACTER | 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 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 |