O que é Basic Authentication nas requisições HTTP?
O Basic Authentication é o sistema de autenticação mais comum do protocolo HTTP. Ele é incluído no header da requisição HTTP dessa maneira:
Authorization: Basic {credenciais em base 64 no formato usuário:senha}
Lembre que o Base 64 é um esquema de codificação e não criptografia. Assim sendo, você DEVE utilizá-lo somente com uma conexão HTTPS (TLS). O uso do Base 64 se deve ao padrão MIME.
Workflow
O esquema de autenticação funciona assim: o servidor responde ao cliente o código HTTP 401 (Unauthorized) e com um cabeçalho WWW-Authenticate
, que dá informações de como se autenticar. O cliente manda o request com o header de autenticação, mostrado acima. Se as credenciais estiverem corretas, receberá uma resposta diferente de 403 (Forbidden).

Segurança
O Basic Auth no HTTPS (TLS) é bom, mas não é 100% seguro. Seu uso dependerá do nível de risco dos dados que estiverem transitando. Perceba que a cada requisição você estará enviando as credenciais. A autenticação pode ser permanentemente armazenada no navegador, se requerido pelo usuário (bem difícil acontecer quando se trata de RESTful APIs).
Existem várias ações a serem tomadas para aumentar a segurança do seu serviço. Não vou me alongar, porém destacar um ponto: gere chaves de API que não sejam quebradas facilmente. Dê uma olhada nos UUIDs.
Quando utilizar?
Só você pode analisar isso. Qual é o nível de sigilo dos dados em trânsito via HTTP? Se for alto, talvez valha a pena investir em outro esquema de autenticação.
Uma grande vantagem do Basic Auth é a simplicidade. Tanto para o cliente quanto para o servidor. Isso vai acelerar o desenvolvimento para os dois lados.
Utilizar esquemas de autenticação mais modernos, como OAuth e OAuth2 trazem suas vantagens, mas tem que se analisar a real necessidade.
- Está transportando dados sigilosos? Talvez a sua opção não seja nem o OAuth ou OAuth2. De quanta segurança você precisa?
- Um esquema simples e de rápida implementação resolve seu problema? O Basic Auth parece ser bom.
- Precisa de funcionalidades como autenticação por outros serviços? O OAuth traz isso e pode ser a opção.
Vou deixar alguns links que podem ajudar na escolha:
- APIUX: “How OAuth 2 trumps Basic Authentication?”
- Software Engineering: “OAuth2 ROPC vs Basic Auth for public REST APIs”
- Security: “Is HTTPS and Basic Authentication secure enough for banking web services (RESTful)?”
- Randall Degges: “Why I Love Basic Auth?”
Resposta original em StackOverflow por “vinibrsl”: https://pt.stackoverflow.com/questions/254503/o-que-%C3%A9-basic-auth