Por que autenticação e autorização são importantes para desenvolvedores?
Published: 2023-01-09 17:50:26

A implementação de medidas de autenticação e autorização é crucial para assegurar a segurança da aplicação e criar uma primeira linha de defesa contra ataques.

Pode-se dizer, ainda, que essas medidas ajudam a aumentar a confiança dos usuários no software, pois garantem que apenas usuários autorizados tenham acesso a funcionalidades e informações confidenciais.

**Preparei esse resumo que ajuda a entender melhor sobre esses conceitos trazendo algumas dicas da OWASP.**

Confira [este artigo da Conviso](https://bit.ly/3vP1IJX) que detalha outros conceitos importantes.

## Autenticação x Autorização
Em resumo, a autenticação é necessária para confirmar que a pessoa que está tentando acessar uma aplicação é realmente quem diz ser. 

Já a autorização é o processo de garantir que o usuário tenha permissão para realizar a ação que está tentando realizar. Por exemplo, um usuário pode ter a autenticação confirmada, mas ainda não ter a autorização para acessar uma área restrita do sistema.

É importante notar que a autenticação e a autorização são duas etapas diferentes e independentes.

## Tipos de Autenticação
**Por usuário e senha:** neste caso, o usuário fornece um nome de usuário e uma senha para acessar uma conta. 

**Autenticação de três fatores:** é uma técnica que combina três tipos diferentes de informações para verificar a identidade do usuário. Esses três tipos são:

- Algo que você conhece: geralmente uma senha ou frase de segurança.
- Algo que você tem: geralmente um dispositivo físico, como um token de segurança ou um aplicativo de autenticação em seu celular.
- Algo que você usa: geralmente algo que está relacionado ao seu corpo, como uma impressão digital ou reconhecimento facial.

**Autenticação baseada em tokens:** neste caso, o usuário recebe um token de acesso que é enviado junto com cada solicitação de API. 

**Autenticação através de certificados:** o usuário possui um certificado digital que é usado para autenticar sua identidade. 

## Exemplos para entender Autorização

**Permissões de usuário:** usada para garantir que o usuário só tenha acesso às ações que estão dentro de suas permissões.

**Baseada em papéis:** um usuário pode ter um determinado papel em uma aplicação, como administrador ou usuário comum. A autorização é usada para garantir que o usuário só tenha acesso às ações permitidas para o seu papel.

**Baseada em condições externas:** a autorização pode ser concedida ou negada com base em condições externas, como localização geográfica, horário ou padrões de uso. 

## Por que são necessárias?
A autenticação é crucial para garantir que apenas os usuários autorizados tenham acesso à aplicação, enquanto a autorização é fundamental para assegurar que os usuários só possam realizar as ações permitidas. 

Essas medidas são importantes para proteger a integridade e a segurança da aplicação e dos dados. Além disso, a autenticação e a autorização são essenciais para manter a privacidade e a confidencialidade das informações e garantir que apenas os usuários autorizados tenham acesso a elas.

## Implementando autenticação e autorização
Implementar autenticação e autorização em uma aplicação envolve diversas etapas e pode ser realizado de diferentes maneiras, dependendo do contexto e das necessidades da aplicação.

**Algumas dicas gerais para a implementação de autenticação e autorização segundo a documentação da OWASP ASVS**:

## 1º Utilizar autenticação de multifatores:
A autenticação de vários fatores exige que o usuário forneça outra informação além da senha para acessar a aplicação. 

Essa técnica inclui ainda mais fatores de autenticação, como reconhecimento de voz ou biometria.

## 2º Armazenar senhas de maneira segura:
É fundamental garantir que as senhas dos usuários sejam armazenadas de maneira segura, para evitar que elas sejam comprometidas em caso de ataques. 

Para isso, é recomendável usar criptografia de senhas ou outras técnicas de segurança, como hash de senhas com sal ou PBKDF2 (Password-Based Key Derivation Function 2).

## 3º Utilizar tokens de acesso seguros
Se a aplicação utiliza tokens de acesso (como JWTs ou cookies) para autenticar os usuários, é importante garantir que esses tokens sejam seguros e protegidos contra ataques. 

Isso pode incluir usar assinaturas criptográficas para validar os tokens e renová-los com frequência.

## É isso!
Consulte a [documentação completa da OWASP](https://owasp.org/www-project-application-security-verification-standard/) para saber mais. Acesse os [canais da Conviso](https://bit.ly/3vPQJQv) e fique atualizado com os principais tópicos sobre Segurança de Aplicações.

Referência: [https://bit.ly/3vP1IJX](https://bit.ly/3vP1IJX)