Conceitos de Segurança: Autenticação e Autorização
Olá, pessoal! Vamos começar nossa conversa de hoje imaginando uma situação bem comum: você chega no trabalho ou na faculdade. Ao entrar no prédio, o primeiro passo é se identificar para o segurança ou usar um crachá. Esse ato de dizer "sou eu, Fulano" e provar isso é o que chamamos de Autenticação. É o processo que responde à pergunta: "Quem você é?". Em nosso mundo digital, isso acontece quando você insere seu login e senha no e-mail, usa a digital para desbloquear o celular ou mesmo quando o banco pede um código enviado por SMS. A autenticação é a primeira barreira, a porta de entrada, garantindo que você é realmente quem diz ser.
Agora, depois de autenticado e dentro do prédio, surge uma nova questão. Mesmo estando identificado, você tem permissão para entrar em todas as salas? Pode acessar o cofre, a sala de servidores ou a diretoria? Provavelmente não. O seu crachá ou o seu perfil de usuário define quais portas você pode abrir e quais ações pode realizar. Esse é exatamente o conceito de Autorização. Ela responde à pergunta: "O que você tem permissão para fazer?". Na prática, mesmo depois de logado no sistema da empresa, um estagiário pode ter autorização apenas para visualizar relatórios, enquanto um gerente tem a autorização adicional de aprová-los e modificá-los.
Vamos a um exemplo prático dentro de uma aplicação que vocês podem criar, como um sistema de vendas online. Quando você faz login (autenticação), o sistema sabe que você é "João". Mas o que o João pode fazer? Se ele for um cliente comum, sua autorização permite que ele veja produtos, adicione itens ao carrinho e compre (CRUD básico em seu próprio carrinho). Agora, se o usuário for um administrador do sistema, após a mesma autenticação, ele terá autorização para fazer muito mais: cadastrar novos produtos (CREATE), alterar preços (UPDATE) ou até excluir itens do catálogo (DELETE). Percebam como são dois momentos distintos e complementares: primeiro eu sei quem é (autenticação), depois eu defino o que essa pessoa pode acessar (autorização).
Dominar essa diferença é um dos pilares para construir aplicações em LPOO (Linguagem de Programação Orientada a Objetos) que são não apenas funcionais, mas também seguras. Podemos modelar classes como Usuario (com atributos de login e senha para a autenticação) e Perfil ou Papel (com permissões específicas que determinam a autorização). Proteger nossa aplicação é crucial, e entender esses dois conceitos é o primeiro e mais importante passo.
Conteúdo baseado nos conceitos fundamentais de segurança da informação, amplamente difundidos em padrões como OWASP (Open Web Application Security Project) e em literature clássica de desenvolvimento de software, como os livros "Clean Code" de Robert C. Martin e "Segurança em Aplicações Web" de Rafael F. Almeida.
Comentários
Postar um comentário