A autenticação é um processo fundamental em sistemas de segurança e gerenciamento de acesso, que visa verificar a identidade de um usuário e permitir o seu acesso a aplicação. No Cronapp, o processo de autenticação de um usuário é realizado através da Fonte de Dados Autenticar, utilizando os registros do Banco de Dados da aplicação. No entanto, caso seja necessário, é possível personalizar a forma de autenticação da aplicação Cronapp. 

Se desejar, o projeto previamente configurado está em um repositório no GitHub. Para mais informações sobre como importar projetos de um servidor Git, acesse a documentação Criar projeto.

Pré-requisitos

Antes de começar a seguir os passos do tutorial, é preciso ter certeza de que se tem um ambiente minimamente preparado para reproduzir o exemplo. Abaixo estão os requisitos principais.

  • Projeto do tipo web e mobile criado. Caso haja dúvidas de como criar esse tipo de projeto, acesse a documentação Criar projeto.
  • Criar funções de blocos de programação. Caso haja dúvidas, acesse o tópico "Criar arquivo Blockly" na documentação Bloco de programação.

Passos

Neste tutorial, criaremos uma função de bloco de programação com uma regra genérica de autenticação e, em seguida, adicionaremos a função criada à ação Para Autenticar da janela de Eventos e Ações.

É importante destacar alguns pontos sobre esse tutorial:

  • A regra criada é apenas um exemplo de uso geral, você pode criar e utilizar regras personalizadas de acordo com os requisitos específicos de sua aplicação.
  • Como estamos substituindo o framework de autenticação do Cronapp, após autenticar, os usuários sempre herdarão as regras do permissionável Authenticated. Dessa forma, será necessário utilizar outras ações, como Para Obter Grupos de Acesso ou Para Obter Permissionável do Usuário, afim de aplicar outras permissões aos usuários do sistema.

Bloco de programação

Vamos dar início ao nosso tutorial criando a nossa função de bloco de programação do tipo servidor. Inicialmente, criamos um arquivo blockly "Autenticacao" e atribuímos o nome "ParaAutenticar" à nossa função. Ela será responsável pelo processo de autenticação do usuário, ou seja, irá verificar se o login e senha do usuário são válidos. Para configurá-la siga os passos abaixo.


Para simplificar o tutorial, vamos obter a lista de usuários autorizados a partir de uma lista JSON, porém, em uma situação real, esses usuários poderiam ser obtidos a partir de um banco de dados ou requisição REST, por exemplo.


Figura 1 - Configurando a parte inicial da função


  1. Vamos adicionar dois parâmetros de entrada na função "ParaAutenticar". Para isso, clique no ícone de engrenagem da função e adicione os parâmetros "username" e "password", que terá por objetivo obter e armazenar as informações de login e senha do usuário. 
  2. Defina uma variável com o nome "usuários" e, nela, adicione o bloco Para Json com o bloco de texto que contém as informações de login de dois usuários, "user1" e "user2", contidas no bloco abaixo:

    [
        {
            "username":"user1",
            "password":"senha1",
            "email":"user1@email.com"
        },
        {
            "username":"user2",
            "password":"senha2",
            "email":"user2@email.com"
        }
    ]
  3. Defina uma variável com o nome "valorBooleano" e insira o bloco de valor nulo. Essa variável será adicionada no retorno da função (destaque 5) e será passada como parâmetro na ação Para Autenticar da janela de Eventos e Ações. No decorrer da execução essa variável assumirá os valores true ou false a depender das validações realizadas e, a partir disso, a autenticação do usuário será válida ou não.
  4. Adicione o bloco condicional se faça, ele será responsável por validar as informações de login e senha de um usuário. Para configurá-lo, clique no ícone de engrenagem do bloco e, abaixo do bloco "se", adicione os blocos "senão se" e "senão", nesta ordem (destaque a).
  5. Insira a variável "valorBooleano" no retorno da função.


Por questão de segurança, a ação Para Autenticar executa 2 vezes a função, uma para validar o nome do usuário e a outra para validar o nome do usuário e senha, Assim, se o parâmetro "password" estiver vazio, significa que é a primeira execução e será necessário validar apenas o nome do usuário na base de dados. Dessa forma, vamos configurar o bloco condicional se faça, responsável por validar as informações de login e senha de um usuário e determinar se ele está autorizado a acessar a aplicação. Na primeira condição (Figura 1.1), iremos verificar se a senha informada por um usuário na tela de login é válida. Configure a sua função de acordo com os passos da imagem abaixo.


Figura 1.1 – Configurando a verificação de senha da aplicação


  1. No parâmetro se do bloco se faça, encaixe o bloco de negação lógica e, em seguida, o bloco é nulo ou vazio? com a variável "password" como parâmetro. Como mencionado anteriormente, essa função será executada duas vezes. Na primeira execução, apenas o usuário é obtido, enquanto a senha permanece vazia. Dessa forma, essa primeira condição verifica inicialmente se a senha está vazia; se estiver, o próximo parâmetro do bloco será executado para a checagem do usuário (Figura 1.2). Na segunda execução, os próximos passos serão executados.
  2. No parâmetro faça do bloco condicional, defina a variável "valorBooleano" com o bloco de valor booleano falso.
  3. Adicione o bloco de repetição para cada item da lista e, nele, a variável "usuários", que foi criada anteriormente e contém as informações dos usuários autorizados a acessar a aplicação. Este bloco será responsável por acessar todos esses usuários e obter seu login (destaque 4) e senha (destaque 5).
  4. Defina uma variável com o nome "obterUsuario" e insira o bloco Obter campo do Json. No parâmetro Json do bloco, adicionamos a variável "i" do laço de repetição, que contém as informações dos usuários cadastrados na aplicação, e no parâmetro Caminho a percorrer incluímos o caminho "username" para obter o login do usuário.
  5. Defina uma variável com o nome "obterSenha" e adicione outro bloco Obter campo do Json, que obterá a senha do usuário, utilizando o caminho "password".
  6. Adicione o bloco se faça e, no parâmetro se, o bloco de operação lógica "e". Em cada um de seus parâmetros, insira o bloco de comparação lógica que irá validar o login e senha informados. Essa condição será válida apenas se as comparações de usuário e senha dos blocos forem verdadeiras. Se o resultado for verdadeiro, indica que o usuário informado está registrado na aplicação e a senha informada é válida para esse usuário.
    1. No parâmetro faça do bloco se faça, se a condição anterior for verdadeira, a variável "valorBooleano" será definida com o bloco de valor booleano verdadeiro, e o bloco encerra finalizará o laço de repetição. Isso significa que o usuário poderá acessar a aplicação, caso contrário a variável "valorBooleano" continuará com o valor false (destaque 2).


Na imagem abaixo, podemos observar as configurações das demais condições do bloco se faça para verificar a autenticidade do usuário na aplicação.


Figura 1.2 – Configurando a verificação de usuário da aplicação


  1. No parâmetro senão se do bloco condicional se faça, encaixe o bloco de negação lógica e, em seguida, o bloco é nulo ou vazio? com a variável "username" como parâmetro. Essa condição inicialmente verifica se o campo de usuário está vazio; se estiver, o próximo parâmetro do bloco será executado (destaque 6).
  2. No parâmetro faça do bloco condicional, definimos a variável "valorBooleano" com o bloco de valor booleano falso.
  3. Adicione o bloco de repetição para cada item da lista e, nele, a variável "usuários". Este bloco será responsável por acessar todos os usuários registrados na aplicação e obter seu login (destaque 4).
  4. Defina uma variável com o nome "obterUsuario" e, nela, insira o bloco Obter campo do Json. No parâmetro Json do bloco, adicionamos a variável "i" do laço de repetição e no parâmetro Caminho a percorrer incluímos o caminho "username" para obter o login do usuário.
  5. Adicione o bloco se faça e, no parâmetro se desse bloco, insira o bloco de comparação lógica, que retornará verdadeiro apenas se a comparação do usuário obtido estiver registrada na aplicação.
    1. No parâmetro faça do bloco se faça, se a condição anterior for verdadeira, a variável "valorBooleano" será definida com o bloco de valor booleano verdadeiro, e o bloco encerra finalizará o laço de repetição. Na primeira execução da função, isso indica que o usuário está presente no registro de usuários da aplicação. Na segunda execução, a senha informada terá sido obtida e a condição detalhada na Figura 1.1 poderá ser validada.
  6. Se nenhuma das condições acima forem verdadeiras, a variável "valorBooleano" receberá o bloco de valor booleano falso. Isso significa que o usuário não terá permissão para acessar a aplicação.

Ação Para Autenticar

Após seguir os passos acima, iremos configurar a ação Para Autenticar da janela de Eventos e Ações, responsável por realizar a autenticação dos usuários ao logar na aplicação, substituindo a autenticação padrão do Cronapp. Para acessar essa funcionalidade, clique em Projetos > Eventos e Ações no menu do sistema.


Figura 1.3 – Configurando a ação Para Autenticar da aplicação


Em seguida, na ação Para Autenticar, clique no botão (destaque 1) para abrir a janela de seleção do bloco de programação. Na janela que for exibida, clique no botão "..." (2) e selecione a função de bloco de programação configurada anteriormente. Após esta ação, os dois parâmetros da função serão exibidos. Na coluna Valor do campo de cada parâmetro, selecione os valores "username" e "password" (destaque 3), respectivamente. Por fim, clique em Selecionar e, na janela de Eventos e Ações, clique em OK.

Executando o projeto

Após completar os passos anteriores, salve as alterações e execute o projeto. Na tela de login, preencha os campos com um nome de usuário e senha registrados na sua aplicação e faça login. Para este exemplo, utilizamos "user1" como usuário e a senha correspondente com base nas informações de usuário criadas (destaque 1 da Figura 1).


Figura 1.4 – Tela de login


Após a autenticação bem-sucedida, o usuário será redirecionado para a página inicial da aplicação. É importante ressaltar que todos os usuários autenticados na aplicação, por padrão, herdarão as regras do permissionável Authenticated. Para obter mais informações, consulte a documentação Permissões de Segurança.


Figura 1.5 – Página inicial exibida após autenticação do usuário


Nesta página

  • Sem rótulos