10 de novembro de 2023

Criar e gerenciar lista de controle de acesso (ACL ou LCA)


 

É muito comum em qualquer tipo de aplicação precisarmos controlar o nível de acesso do usuário a determinadas páginas ou componentes da aplicação dependendo do privilégio concedido a um determinado usuário, por isso vamos criar uma Página de Controle de Acesso . Para este exemplo teremos três níveis diferentes de usuários, por exemplo, usuários que podem apenas visualizar as informações, usuários que podem visualizar e também editar as informações do aplicativo e por último o usuário do tipo administrador.

Gerenciar controle de acesso 


Criar página de controle de acesso 

Ao adicionar o recurso de controle de acesso a um aplicativo, diversas páginas e os seguintes componentes são criados:

  • Uma região de controle de acesso
  • Funções de acesso
  • Esquemas de autorização
  • Uma opção de construção à Recurso: Controle de acesso
  • Uma configuração de aplicativo em ACCESS_CONTROL_SCOPE

Os desenvolvedores usam a lista de controle de acesso para associar os privilégios de  visualização ,  edição e  administração aos usuários do aplicativo. Na interface de controle de acesso final, cada privilégio é mapeado para uma função de acesso:

  • Visualize mapas para a  função Leitor .
  • Edite mapas para a  função Colaborador .
  • Administration se correlaciona com o Administrator Rol.

Quando você adiciona a funcionalidade de controle de acesso a um aplicativo, o assistente PL/SQL cria os seguintes esquemas de autorização: 

– Este esquema de autorização verifica se a função foi atribuída ao usuário atual no aplicativo 

 Administration Rights ADMINISTRATOR

return APEX_ACL.HAS_USER_ROLE (p_application_id=>:APP_ID, p_user_name => :APP_USER, p_role_static_id => 'ADMINISTRATOR'); 

Contribution Rights – Este esquema de autorização verifica se o usuário atual no aplicativo recebeu a função ADMINISTRATOR ou a função CONTRIBUTOR.

if apex_acl.has_user_role (
  p_application_id=>:APP_ID,
  p_user_name => :APP_USER,
  p_role_static_id => 'ADMINISTRATOR') or
  apex_acl.has_user_role (
    p_application_id=>:APP_ID,
    p_user_name=> :APP_USER,
    p_role_static_id=> 'CONTRIBUTOR') then
    return true;
else
    return false;
end if;

Reader Rights Este esquema de autorização retorna TRUE se o controle de acesso estiver configurado para permitir que qualquer usuário autenticado acesse o aplicativo. Se este comportamento não for permitido, verifique se o usuário atual da aplicação está atribuído a alguma função na aplicação.

if nvl(apex_app_setting.get_value(
   p_name => 'ACCESS_CONTROL_SCOPE'),'x') = 'ALL_USERS' then
    -- allow user not in the ACL to access the application
    return true;
else
    -- require user to have at least one role
    return apex_acl.has_user_any_roles (
        p_application_id => :APP_ID,
        p_user_name      => :APP_USER);
end if;

A primeira coisa que faremos é criar uma página de controle de acesso executando o Assistente de página de controle de acesso. Da página inicial do Oracle APEX, entramos em nossa aplicação, no meu caso:

Demonstração – Projetos


Na página inicial do aplicativo, clique no botão Criar página.


Selecione a guia Recurso e selecione Controle de acesso.


Na janela Criar páginas de controle de acesso:

  • Referência da página de administração: identificar uma página existente
  • Página de administração existente: 10000

Obs: no meu caso eu já tinha uma página de administração criada, caso não tenha crie uma nova.


Clique no botão Avançar. 

Verifique a janela de confirmação . 

Em seguida, clique no botão Criar . 


Execute a página de controle de acesso 

Executamos a página 10000 e podemos ver que uma região de controle de acesso foi adicionada. Dentro desta região existe uma lista que contém a lista de Usuários e se o Controle de Acesso está habilitado ou não. 

Clique no botão Adicionar usuário

Digite o nome de usuário: CLARA . 

Marque a caixa de seleção como Contribuidor e clique em Adicionar usuário

Nota: O usuário deve existir como usuário final no espaço de trabalho. 

Digite o nome de usuário: JANE . 

Marque a caixa de seleção como Leitor e clique em Adicionar usuário . 

Nota: O usuário deve existir como usuário final no espaço de trabalho. Clique em Usuários para visualizar os usuários e suas funções.






Podemos ver que temos um usuário administrador, um usuário colaborador e um usuário leitor. 

Desabilitar Lista de Controle de Acesso 

Caso queira desabilitar a Lista de Controle de Acesso para que qualquer usuário autenticado no APEX possa entrar na aplicação, clique em Controle de AcessoEm seguida, na tela modal clique no botão para habilitar qualquer usuário que entre no aplicativo. 


Restringir acesso a um usuário do tipo Leitor 

O usuário JANE não pode criar tarefas ou editar tarefas, portanto o botão criar e o link de edição da tarefa devem ser restritos para que apenas usuários do tipo Colaborador e Administrador possam ter acesso. 

Na página inicial do aplicativo, clique na página 10 – Demo TasksClique no botão CRIAR

No painel de propriedades do botão, navegue até a seção Segurança

Selecione: Esquema de Autorização: Direitos do Colaborador.

Selecione a região do relatório interativo Tarefas de demonstração. Na guia Atributos da região e na seção Link, selecione: Esquema de Autorização: Direitos do Colaborador . 

Salve as alterações da página. 


Testar o acesso do usuário CLARA – Com a função CONTRIBUTOR 

Faça login como usuário CLARA. 

Navegue até a página Tarefas de demonstração

O usuário CLARA pode editar uma tarefa ou criar uma nova tarefa. Além disso, você também não pode ver o menu Administração. 

Feche a sessão do usuário CLARA. 


Teste de acesso para o usuário JANE – com a função READER

Faça login como o usuário JANE.

Navegue até a página Tarefas de demonstração

O usuário JANE não pode editar uma tarefa ou criar uma nova tarefa. 

Saia do usuário JANE.








Resumo

Nesta prática pudemos ver como implementar a Lista de Controle de Acesso no APEX. Ressalta-se que é um trabalho muito específico e detalhado, pois deve ser determinado o nível de acesso para usuários somente visualização, usuários de edição de dados e o nível de administração para toda a aplicação. Neste exemplo vimos como implementá-lo em uma única página com um relatório interativo, mas nem é preciso dizer que para cada parte da nossa aplicação devemos indicar o nível de acesso do usuário se tivermos implementado a lista de controle de acesso.

----

Fonte: Clarisa Maman Orfali | Blog APRENDER DESARROLLO APEX

Nenhum comentário:

Postar um comentário