Autenticação e autorização: Segurança de Acesso a Recursos

O avanço e a popularização das tecnologias abriu aos usuários a possibilidade de navegar livremente pela internet, podendo contratar e utilizar diversos serviços remotamente por exemplo. Assim, tornou-se fundamental investir em estratégias que possam adicionar maior segurança e confidencialidade nos métodos de identificação dos usuários (ALVES et al., 2017). Através de processos de autenticação e autorização pode-se proteger o acesso a um determinado recurso, estabelecendo regras e permissões que podem variar dependendo de quem o requisita, e para isso existem padrões e protocolos que especificam a melhor forma de projetar estas etapas do sistema, como gerenciar a identidade, mover dados pessoais com segurança e decidir quem pode acessar aplicativos e dados.

Autenticação

A autenticação é o processo através do qual um requerente prova quem afirma ser, ou seja, se verifica e confirma a autenticidade do usuário (RAHMAN; SHUVA; ALI, 2016). Neste processo, usualmente feito antes da autorização, o usuário é “desafiado” através de senhas ou até reconhecimento facial, de forma que sua identidade seja validada. A autenticação é um pré-requisito para o acesso aos recursos de um sistema e permite que as aplicações e serviços permaneçam confiáveis, impedindo acessos não autorizados. A autenticação pode se enquadrar em três categorias que respondem a três questionamentos “What you know”, “What you have” e “What you are”, respectivamente, são elas:

  • Single-Factor Authentication depende de um único fator, podendo ser senha, código, PIN, etc..

  • Two-Factor Authentication requer dois fatores para o sistema permitir o acesso a algum serviço, indo além de apenas nome de usuário e senha.

  • Multi-Factor Authentication (MFA) exige a utilização de dois ou mais fatores de segurança de categorias independentes. Esta categoria usualmente utiliza reconhecimento facial, impressão digital, leitura de íris ou reconhecimento de voz.

Autorização

Uma vez que o usuário já foi autenticado, a autorização é o método que determina o que o mesmo pode ou não acessar dentro do sistema. Este processo é redigido por meio de policies, rules e definição de roles, utilizadas para decidir qual o nível de acesso atribuído a um usuário autenticado para um recurso (DOULIGERIS; SERPANOS, 2007).

Autenticação vs. Autorização

Em poucas palavras, a autenticação verifica quem é o usuário enquanto a autorização verifica ao que ele tem acesso. A Tabela a seguir apresenta as principais diferenças entre os dois processos:

AUTENTICAÇÃOAUTORIZAÇÃO
Determina se o usuário é quem afirma serDetermina o que o usuário pode ou não acessar
Desafia o usuário a validar suas credenciaisVerifica se o acesso é permitido através de políticas e regras
Geralmente feito antes da autorizaçãoGeralmente feito após autenticação bem sucedida
Geralmente transmite informações por meio de um ID TokenGeralmente transmite informações por meio de um Access Token
Geralmente regido pelo protocolo OpenID Connect (OIDC)Geralmente regido pela estrutura OAuth 2.0
Exemplo: funcionários de uma empresa são obrigados a se autenticar por meio da rede antes de acessar o email da empresaExemplo: depois do funcionário se autenticar, o sistema determina quais informações o mesmo tem permissão para acessar
Fonte: adaptado de Auth0

Tokens

O token é um objeto composto por informações, o qual sozinho não possui significado, porém quando utilizado em conjunto com um sistema de Autenticação Baseado em Token (Token Based Authentication) funciona garantindo que todas as solicitações feitas a um determinado servidor sejam acompanhadas por um token assinado e válido. Os principais tipos de tokens são:

  • ID Token: possui informações do usuário autenticado, e as utiliza inclusive para personalizar a experiência do mesmo. É utilizado somente pelo Client App que requisitou a autenticação.
  • Access Token: são utilizados a cada request como credenciais para informar ao serviço requisitado que o portador do token foi previamente autorizado a acessar a API e executar um conjunto de ações.

Na Prática

A seguir está apresentado o fluxo de autenticação e autorização por meio de token entre Usuário, Client App, Auth Server e um Web Service (API).

Fonte: Auth0

Conclusões

Boas práticas de segurança tornam-se cada vez mais indispensáveis no desenvolvimento de um projeto de software. Identificar o usuário, validar suas credenciais e restringir seu acesso a determinados recursos é o ponto de partida para diminuir riscos e possíveis falhas que possam comprometer a integridade do sistema, além de proporcionar uma melhor experiência a quem o utiliza.

Autor: Gustavo Sachet

Referências:

ALVES, Késia Cristina. O impacto do registro digital nos processos de legalização de empresas nos escritórios de contabilidade da cidade de Uberlândia. 2017. 27 f. Trabalho de Conclusão de Curso (Graduação em Ciências Contábeis) – Universidade Federal de Uberlândia, 2017.

AUTH0. Authentication vs. Authorization. Disponível em: https://auth0.com/docs/get-started/authentication-and-authorization#authentication-vs-authorization. Acesso em: 29 set. 2021.

AUTH0. Authorization code flow. Disponível em: https://auth0.com/docs/authorization/flows/authorization-code-flow#how-it-works. Acesso em: 29 set. 2021.

AUTH0. Tokens. Disponível em: https://auth0.com/docs/security/tokens. Acesso em: 29 set. 2021.

DOULIGERIS, Christos; SERPANOS, Dimitrios N. Network Security: Current Status and Future Directions. Wiley-Ieee Press, 2007. 592 p.

RAHMAN, Md. Tanvir; SHUVA, Taslima Ferdaus; ALI, K. M. Akkas. Trusted Device along with Trusted Location and Biometry based Authentication Method. International Journal Of Computer Applications, v. 150, n. 4, p. 26-30, set. 2016.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *