Sobes.tech
Junior

O que é autenticação básica (Basic Auth)?

sobes.tech IA

Resposta da IA

A autenticação básica é a forma mais simples de autenticação de cliente HTTP, definida no padrão RFC 7617.

Princípio de funcionamento:

  1. O cliente envia uma requisição HTTP a um recurso protegido.
  2. O servidor responde com um status 401 Unauthorized e um cabeçalho WWW-Authenticate: Basic realm="<realm>", onde <realm> é uma descrição textual da área protegida (recurso).
  3. O navegador ou aplicação cliente exibe uma caixa de diálogo para inserir o nome de usuário e a senha.
  4. O cliente codifica o nome de usuário e a senha numa string no formato username:password.
  5. A string obtida é codificada usando Base64.
  6. O cliente repete a requisição, adicionando o cabeçalho Authorization: Basic <string_base64_codificada>, onde <string_base64_codificada> é o resultado da codificação Base64.
  7. O servidor decodifica a string Base64, separa o nome de usuário e a senha e verifica as credenciais.
  8. Se as credenciais estiverem corretas, o servidor envia o recurso solicitado. Caso contrário, responde novamente com 401 Unauthorized.

Exemplo de cabeçalho Authorization:

Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l

onde YWxhZGRpbjpvcGVuc2VzYW1l é uma string codificada em Base64 de aladdin:opensesame.

Características:

  • Simplicidade: Fácil de implementar tanto no cliente quanto no servidor.
  • Insegurança: Os dados de credenciais são transmitidos, mesmo codificados em Base64, mas sem criptografia. Base64 é uma codificação, não uma criptografia. Ao interceptar o tráfego, os dados podem ser facilmente decodificados. Somente em combinação com HTTPS ela fornece um nível mínimo de segurança.
  • Estado: Não mantém estado no servidor entre requisições (sem estado). Cada requisição requer o cabeçalho Authorization.
  • Experiência do usuário: A janela de diálogo do navegador é menos flexível e amigável em comparação com formulários de autenticação personalizados.

Uso: Geralmente utilizado para proteger APIs, recursos estáticos ou em sistemas internos simples onde a segurança não é crítica, ou sempre em combinação com SSL/TLS (HTTPS).