Objetivo
O objetivo da funcionalidade é garantir um segundo nível de acesso a determinadas telas.
Matriz de Evolução
Versão / Release | Funcionalidade |
---|---|
12.1.12 |
|
12.1.14 |
|
12.1.16 |
|
12.1.19 |
|
12.1.24 |
|
12.1.31 |
|
Índice
Visão geral
O programa consiste na confirmação da senha do usuário logado ou requisição de um novo login (usuário e senha) independentemente de seu "Tipo Acesso" (Interno ou Externo), para que seja aberta a tela com a segurança do Login Intermediário aplicada.
Configuração
As regras de login dependem do Tipo Acesso relacionado ao usuário a ser validado, sendo considerado a autenticação via Active Directory (AD) para usuários do tipo "Externo" e as mesmas regras configuradas em Segurança avançada (propriedades-seguranca) para usuários do tipo "Interno". Mais informações quanto a parametrização de segurança para usuários do tipo Interno, estão disponíveis em: Segurança avançada.
A interface do Login Intermediário será modificada de acordo com o campo "Usuário" (que pode ser sugerido na apresentação da tela) e a lista de códigos dos usuários que possuem permissão para se autenticar. Esta tela também pode ser alterada dinamicamente ao sair do campo Usuário, no qual o sistema irá localizar se o código inserido possui um usuário relacionado do tipo 'Interno', 'Externo' ou se existe um código de usuário cadastrado em ambos os caso.
Validação de segurança da empresa corrente
- O login intermediário não permite autenticar usuários que não tenham relacionamento com empresa corrente.
- Será exibida uma mensagem de erro com o código 56374, para o usuário sem o relacionamento com a empresa:
Texto: O usuário (Código do usuário) não possui relacionamento com a empresa (Código da empresa e nome abreviado)!
Ajuda: Certifique-se de que a empresa (Código da empresa e nome abreviado) esteja associada ao usuário (Código do usuário) , no programa Manutenção de Usuário na pasta Empresa.
- Será exibida uma mensagem de erro com o código 56374, para o usuário sem o relacionamento com a empresa:
Exemplos
/*--- Solicita usuário e senha ---*/ RUN btb/btb910zc.p (INPUT c-user-list,INPUT YES, INPUT c-seg-usuario, OUTPUT c-usuario). /*--- Trecho de código dos parâmetros recebidos 'btb910zc.p' ---*/ DEFINE INPUT PARAM p_des_lista_usuar AS CHARACTER FORMAT "x(08)" NO-UNDO. DEFINE INPUT PARAM p_log_confir AS LOGICAL FORMAT "Sim/Não" NO-UNDO. DEFINE INPUT PARAM p_cod_usuario_def AS CHARACTER FORMAT "x(12)" NO-UNDO. DEFINE OUTPUT PARAM p_cod_usuario_aut AS CHARACTER FORMAT "x(12)" NO-UNDO.
Descrição dos parâmetros
- Lista com o código de usuários que tem permissão para se autenticar no login intermediário.
- Indica se a tela de login é exibida ou realiza uma autenticação sem exibir a tela.
- Autenticação sem tela:
- Somente verifica se usuário informado no parâmetro c-seg-usuario existe na lista de usuários c-user-list. Desconsidera a utilização de senha e também regras de segurança configuradas em Parâmetros de Segurança Avançada;
- Caso não encontre o usuário na lista, é exibida a tela para autenticação.
- Autenticação sem tela:
- Código do usuário para autenticação.
- Retorno do usuário autenticado.
Situações e comportamentos de tela
A seguir, serão apresentadas situações de como a tela inicial do Login Intermediário é apresentada de acordo com o usuário e os parâmetros de sua lista. É importante ressaltar que ao "sair" do campo Usuário (quando habilitado para edição), a tela pode ser modificada dinamicamente conforme o tipo do usuário localizado (Interno e Externo).
Situação 1: Enviar apenas um usuário na lista de usuários, sendo igual ao código do usuário que será autenticado.
DEFINE VARIABLE c-usuario AS CHAR NO-UNDO. RUN btb/btb910zc.p (INPUT "super", INPUT YES, INPUT "super", OUTPUT c-usuario). /*--- Tratamento do retorno ---*/ ...
Código do usuário bloqueado para edição, habilita somente a confirmação da senha.
Situação 2: Enviar apenas um usuário na lista de usuários, sendo diferente ao código do usuário que será autenticado.
DEFINE VARIABLE c-usuario AS CHAR NO-UNDO. RUN btb/btb910zc.p (INPUT "super1", INPUT YES, INPUT "super", OUTPUT c-usuario). /*--- Tratamento do retorno ---*/ ...
O usuário de autenticação 'super' não pertence a lista de usuários permitidos 'super1'.
A tela não sugere informações e todos os campos são habilitados para edição.
Situação 3: Enviar uma lista de usuários e o usuário logado na sessão (login realizado com usuário super).
DEFINE VARIABLE c-user-list AS CHAR NO-UNDO. DEFINE VARIABLE c-usuario AS CHAR NO-UNDO. DEFINE NEW GLOBAL SHARED VARIABLE c-seg-usuario AS CHAR FORMAT "x(12)" NO-UNDO. FOR EACH usuar_mestre FIELDS (usuar_mestre.cod_usuario) NO-LOCK: ASSIGN c-user-list = c-user-list + usuar_mestre.cod_usuario + ",". END. RUN btb/btb910zc.p (INPUT c-user-list, INPUT YES, INPUT c-seg-usuario, OUTPUT c-usuario). /*--- Tratamento do retorno ---*/ ...
A tela é aberta com a sugestão do usuário com o campo Usuário habilitado para edição.
Como se trata do usuário com o tipo Interno, o campo 'Utilizar domínio' é desabilitado.
Situação 4: Enviar uma lista de usuários e um usuário inexistente na usuar_mestre (Cadastro de Usuários).
DEFINE VARIABLE c-user-list AS CHAR NO-UNDO. DEFINE VARIABLE c-usuario AS CHAR NO-UNDO. FOR EACH usuar_mestre FIELDS (usuar_mestre.cod_usuario) NO-LOCK: ASSIGN c-user-list = c-user-list + usuar_mestre.cod_usuario + ",". END. RUN btb/btb910zc.p (INPUT c-user-list, INPUT YES, INPUT "usuario_inexistente", OUTPUT c-usuario). /*--- Tratamento do retorno ---*/ ...
O código "usuario_inexistente" não pertence a lista de usuários.
A tela não sugere informações e todos os campos são habilitados para edição.
Situação 5: Enviar a lista e usuário diferentes do logado na sessão (efetuado o login com um usuário do tipo Externo).
DEFINE VARIABLE c-usuario AS CHAR NO-UNDO. RUN btb/btb910zc.p (INPUT "super", INPUT YES, INPUT "super", OUTPUT c-usuario). /*--- Tratamento do retorno ---*/ ...
Apesar de enviar o mesmo código pertencente a lista de autenticação, quando o login é efetuado com usuário do tipo Externo, este se torna prioridade na sugestão.
A tela não sugere informações e todos os campos são habilitados para edição.
Situação 6: Enviar apenas um usuário na lista de usuários (código do ERP) sendo igual ao código do usuário da sessão (efetuado o login com um usuário do tipo Externo).
DEFINE VARIABLE c-usuario AS CHAR NO-UNDO. RUN btb/btb910zc.p (INPUT "c.interno", INPUT YES, INPUT "c.interno", OUTPUT c-usuario). /*--- Tratamento do retorno ---*/ ...
Aparecerá o login do usuário Externo, somente autorizado para a confirmação da senha.
O campo Usuário, Utilizar domínio e Domínio são bloqueados para edição.
Situação 7: Enviar a lista de usuários (que possui o usuário logado na sessão) e o código do usuário para autenticação diferente do logado (efetuado o login com um usuário do tipo Externo).
DEFINE VARIABLE c-user-list AS CHAR NO-UNDO. DEFINE VARIABLE c-usuario AS CHAR NO-UNDO. FOR EACH usuar_mestre FIELDS (usuar_mestre.cod_usuario) NO-LOCK: ASSIGN c-user-list = c-user-list + usuar_mestre.cod_usuario + ",". END. RUN btb/btb910zc.p (INPUT c-user-list, INPUT YES, INPUT "super", OUTPUT c-usuario). /*--- Tratamento do retorno ---*/ ...
O código do usuário para autenticação enviado ("super") é ignorado, pois o usuário da sessão é prioridade na sugestão dos campos e o mesmo pertence a lista.
É sugerido o usuário logado na sessão, porém todos os campos estão habilitados para edição caso necessite trocar a autenticação do usuário.
Situação 8: Enviar lista de usuários e um código para autenticação que possua simultaneamente registros de usuários do Tipo Interno e Externo válidos.
DEFINE VARIABLE c-user-list AS CHAR NO-UNDO. DEFINE VARIABLE c-usuario AS CHAR NO-UNDO. FOR EACH usuar_mestre FIELDS (usuar_mestre.cod_usuario) NO-LOCK: ASSIGN c-user-list = c-user-list + usuar_mestre.cod_usuario + ",". END. RUN btb/btb910zc.p (INPUT c-user-list, INPUT YES, INPUT "c.int.ext", OUTPUT c-usuario). /*--- Tratamento do retorno ---*/ ...
Usuário cadastrado com o código "c.int.ext" com uma data válida para o acesso ao produto.
Usuário cadastrado com o login Externo como "c.int.ext", idêntico ao usuário Interno citado anteriormente.
É sugerido o Usuário que poderá ser tanto o código do login Interno quanto o login Externo.
Como o sistema 'encontrou' dois usuários válidos de diferentes tipos (Interno e Externo) o campo Utilizar domínio é habilitado para edição.
Caso o login seja referente ao usuário Interno, é necessário desconsiderar o campo domínio.
Caso o usuário desejado seja do tipo Externo, basta clicar na opção Utilizar domínio.
A lista é carregada automaticamente de acordo com o cadastro do usuário.