Se você está trabalhando com APIs, provavelmente sabe o que é o cabeçalho de autorização HTTP. É uma maneira de enviar credenciais a um servidor para autenticar uma solicitação. É frequentemente usado para acessar recursos protegidos ou realizar ações que requerem permissão.
Mas você sabe como usá-lo de forma eficaz e segura? Neste post do blog, vamos mostrar como usar o cabeçalho de autorização HTTP como um profissional, utilizando uma ferramenta chamada Apidog.
Ao final deste post do blog, você terá uma melhor compreensão do cabeçalho de autorização HTTP e como usá-lo com confiança. Vamos lá!
O que é um Cabeçalho de Autorização HTTP?
O cabeçalho de autorização HTTP é parte do protocolo HTTP que permite enviar credenciais a um servidor para autenticar uma solicitação. Normalmente é formatado como:
Authorization: <tipo> <credenciais>
O <tipo>
indica o esquema de autorização, como Basic, Bearer, Digest, etc. As <credenciais>
são os dados que o servidor precisa para verificar sua identidade, como um nome de usuário e uma senha, um token, um hash, etc.
O cabeçalho de autorização HTTP é frequentemente usado para acessar recursos protegidos ou realizar ações que requerem permissão. Por exemplo, pode ser necessário enviar o cabeçalho de autorização HTTP para:
- Acessar o perfil ou dados de um usuário em uma plataforma de mídia social
- Carregar ou baixar arquivos de um serviço de armazenamento em nuvem
- Fazer um pagamento ou uma transação em um site de comércio eletrônico
- Gerenciar ou monitorar um servidor ou dispositivo em uma rede
- E muito mais
O cabeçalho de autorização HTTP é uma maneira simples e flexível de autenticar solicitações, mas também apresenta alguns desafios e riscos. Você precisa escolher o esquema de autorização correto para sua API, gerar e enviar o cabeçalho de autorização HTTP corretamente, lidar com erros e respostas do servidor, proteger seu cabeçalho de autorização HTTP contra ataques e documentar seu cabeçalho de autorização HTTP para outros desenvolvedores.

Como Escolher o Esquema de Autorização Certo para sua API
Existem muitos esquemas de autorização que você pode usar com o cabeçalho de autorização HTTP, como Basic, Bearer, Digest, OAuth, etc. Cada esquema tem suas próprias vantagens e desvantagens, e você precisa escolher aquele que atende às necessidades e requisitos de segurança da sua API. Aqui estão alguns fatores que você deve considerar ao escolher um esquema de autorização para sua API:
- Complexidade: Alguns esquemas de autorização são mais simples e fáceis de implementar do que outros. Por exemplo, Basic e Bearer são muito diretos e requerem apenas um único cabeçalho, enquanto OAuth e Digest são mais complexos e exigem várias etapas e cabeçalhos. Você deve escolher um esquema de autorização que seja fácil de entender e usar tanto para você quanto para os consumidores de sua API.
- Segurança: Alguns esquemas de autorização são mais seguros e robustos do que outros. Por exemplo, Basic e Bearer são vulneráveis a escuta e ataques de repetição, enquanto OAuth e Digest são mais resistentes a essas ameaças. Você deve escolher um esquema de autorização que forneça proteção adequada para os dados e funcionalidades da sua API.
- Desempenho: Alguns esquemas de autorização são mais eficientes e rápidos do que outros. Por exemplo, Basic e Bearer são sem estado e não requerem nenhuma solicitação ou consulta adicional ao banco de dados, enquanto OAuth e Digest são com estado e podem exigir sobrecarga extra. Você deve escolher um esquema de autorização que minimize a latência e o consumo de largura de banda da sua API.
- Padronização: Alguns esquemas de autorização são mais amplamente adotados e suportados do que outros. Por exemplo, Basic e Bearer são muito comuns e compatíveis com a maioria dos clientes e servidores HTTP, enquanto OAuth e Digest são mais específicos e podem exigir bibliotecas ou ferramentas especiais. Você deve escolher um esquema de autorização que seja fácil de integrar e manter para sua API.
Para ajudá-lo a escolher o esquema de autorização certo para sua API, aqui está uma tabela que resume as principais características e diferenças de alguns esquemas de autorização populares:
Esquema | Complexidade | Segurança | Desempenho | Padronização |
---|---|---|---|---|
Basic | Baixa | Baixa | Alta | Alta |
Bearer | Baixa | Média | Alta | Alta |
Digest | Média | Média | Média | Média |
OAuth | Alta | Alta | Baixa | Média |
Claro, esta tabela não é exaustiva e podem haver outros esquemas de autorização que não estão listados aqui. Você deve sempre fazer sua própria pesquisa e testes antes de escolher um esquema de autorização para sua API.

Como Usar o Cabeçalho de Autorização HTTP com Autenticação Básica?
A autenticação básica é um dos tipos mais simples e amplamente utilizados de cabeçalho de autorização HTTP. Funciona enviando o nome de usuário e a senha do solicitante em texto simples, codificados em base64, para o servidor. O servidor então decodifica as credenciais e verifica se elas correspondem às armazenadas em seu banco de dados. Se corresponderem, o servidor concede acesso ao recurso solicitado. Se não, o servidor retorna uma mensagem de erro.
Para usar o cabeçalho de autorização HTTP com autenticação básica, você precisa seguir estas etapas:
- Codifique seu nome de usuário e senha em base64. Você pode usar qualquer ferramenta ou biblioteca online para fazer isso. Por exemplo, se seu nome de usuário for “alice” e sua senha for “secret”, a string codificada em base64 seria “YWxpY2U6c2VjcmV0”.
- Adicione o prefixo "Basic " à string codificada. Isso indica que você está usando autenticação básica. Por exemplo, a string final seria “Basic YWxpY2U6c2VjcmV0”.
- Defina o valor do cabeçalho de autorização HTTP para a string final. Por exemplo, o cabeçalho de autorização HTTP ficaria assim:
Authorization: Basic YWxpY2U6c2VjcmV0
4. Envie a solicitação ao servidor. O servidor decodificará as credenciais e autentificará a solicitação. Por exemplo, se você estiver usando curl, o comando seria assim:
curl -H "Authorization: Basic YWxpY2U6c2VjcmV0" https://example.com/api
5. Receba a resposta do servidor. Se as credenciais forem válidas, o servidor retornará o recurso solicitado. Se as credenciais forem inválidas, o servidor retornará uma mensagem de erro com o código de status 401 (Não Autorizado).
Usar o cabeçalho de autorização HTTP com autenticação básica é simples e fácil, mas também tem algumas desvantagens. A principal desvantagem é que as credenciais são enviadas em texto simples, o que significa que podem ser interceptadas e comprometidas por qualquer um que possa ver o tráfego da rede.
Portanto, a autenticação básica deve ser utilizada apenas sobre HTTPS, que criptografa os dados e impede a escuta. Outra desvantagem é que a autenticação básica não suporta qualquer forma de gerenciamento de sessão, o que significa que as credenciais precisam ser enviadas com cada solicitação, o que pode ser ineficiente e inseguro.
Portanto, a autenticação básica deve ser usada apenas para APIs simples e sem estado, onde os requisitos de segurança são baixos e o impacto no desempenho é mínimo.

Como Usar o Cabeçalho de Autorização HTTP com Token Bearer
O token Bearer é outro tipo popular de cabeçalho de autorização HTTP. Funciona enviando um token, que é uma string de caracteres que representa a identidade e as permissões do solicitante, ao servidor. O servidor então valida o token e verifica se ele concede acesso ao recurso solicitado. Se conceder, o servidor retorna o recurso. Se não conceder, o servidor retorna uma mensagem de erro.
Para usar o cabeçalho de autorização HTTP com token Bearer, você precisa seguir estas etapas:
- Obtenha um token do servidor ou de um serviço de terceiros. O token pode ser gerado e validado usando vários métodos e padrões, como JWT (JSON Web Token), que é uma maneira autossuficiente e segura de codificar e verificar reivindicações. Para obter um token, geralmente você precisa fornecer algumas credenciais, como nome de usuário e senha, ou uma chave de API, ao servidor ou ao serviço. O servidor ou o serviço então retornará um token que contém as informações e permissões do solicitante. Por exemplo, se você estiver usando JWT, o token ficaria assim:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhbGljZSIsIm5hbWUiOiJBbGljZSBCb2IiLCJyb2xlIjoiYWRtaW4iLCJleHAiOjE2MjEwMjQwMDB9.6y0jZt7xg8GxhXUq3TJrcQ4aR7fZ0v0t5DLGJ4Z5C8k
O token consiste em três partes, separadas por pontos: o cabeçalho, a carga e a assinatura. O cabeçalho contém o algoritmo e o tipo do token. A carga contém as reivindicações, que são as informações e permissões do solicitante. A assinatura é o resultado de aplicar o algoritmo ao cabeçalho e à carga, usando uma chave secreta. A assinatura garante a integridade e autenticidade do token.
2. Adicione o prefixo "Bearer " ao token. Isso indica que você está usando autenticação de token Bearer.
3. Defina o valor do cabeçalho de autorização HTTP para a string final.
4. Envie a solicitação ao servidor. O servidor decodificará e verificará o token e autentificará a solicitação.
5. Receba a resposta do servidor. Se o token for válido, o servidor retornará o recurso solicitado. Se o token for inválido, o servidor retornará uma mensagem de erro com o código de status 401 (Não Autorizado) ou 403 (Proibido).

Como usar o cabeçalho de autorização HTTP com Autenticação Digest
A autenticação digest é um tipo de cabeçalho de autorização HTTP mais avançado e seguro do que a autenticação básica. Funciona enviando um hash, que é o resultado de aplicar uma função matemática a uma string de caracteres, das credenciais e algumas outras informações, como um nonce e um timestamp, ao servidor. O servidor então calcula o mesmo hash usando as mesmas informações e o compara com o enviado pelo solicitante. Se corresponderem, o servidor concede acesso ao recurso solicitado. Se não, o servidor retorna uma mensagem de erro.
Para usar o cabeçalho de autorização HTTP com autenticação digest, você precisa seguir estas etapas:
- Receba um desafio do servidor. O desafio é uma mensagem que contém algumas informações que o servidor usa para verificar as credenciais, como um nonce, um realm e um qop. O desafio é enviado pelo servidor quando o solicitante tenta acessar um recurso protegido sem autenticação, ou com credenciais inválidas. O desafio é enviado com o código de status 401 (Não Autorizado) e um cabeçalho chamado WWW-Authenticate.
- Calcule o hash das credenciais e do desafio. O hash é calculado usando uma função matemática chamada MD5, que produz um número hexadecimal de 32 dígitos a partir de qualquer entrada.
O hash é composto por três partes: o HA1, o HA2 e a resposta. O HA1 é o hash do nome de usuário, do realm e da senha. O HA2 é o hash do método HTTP e da URI da solicitação. A resposta é o hash do HA1, do nonce, da contagem de nonce, do nonce do cliente, do qop e do HA2. A contagem de nonce é um número que indica quantas vezes o nonce foi utilizado. O nonce do cliente é uma string aleatória gerada pelo solicitante.
Como Enviar o Cabeçalho de Autorização HTTP com Apidog
Uma vez que você tenha escolhido um esquema de autorização para sua API, você precisa gerar e enviar o cabeçalho de autorização HTTP com suas solicitações. Isso pode ser feito facilmente com Apidog, uma ferramenta baseada na web que ajuda você a testar, depurar e documentar suas APIs. O Apidog permite que você:
- Crie e salve várias solicitações de API com diferentes parâmetros, cabeçalhos e corpo
- Envie e receba solicitações e respostas de API em tempo real
- Veja e analise o status, cabeçalhos e corpo da resposta da API
- Valide e formate o corpo da resposta da API com JSON, XML, HTML, etc.
- Gere e compartilhe documentação da API com outros desenvolvedores.
Para usar o Apidog, você precisa seguir estas etapas:
- Clique no botão "Nova Solicitação".

2. Selecione o método HTTP que deseja usar e insira a URL da API que deseja acessar.

3. Clique na aba "Cabeçalhos" e adicione o cabeçalho de autorização HTTP e Auth para modificar seu tipo de autorização.


4. Clique no botão "Enviar" e verifique o código de status da resposta, cabeçalhos e corpo. Se o token for válido, o código de status deve ser 200 (OK) e o corpo deve conter o recurso solicitado. Se o token for inválido, o código de status deve ser 401 (Não Autorizado) ou 403 (Proibido) e o corpo deve conter uma mensagem de erro.

Verifique o código de status da resposta, cabeçalhos e corpo. Se o token for válido, o código de status deve ser 200 (OK) e o corpo deve conter o recurso solicitado. Se o token for inválido, o código de status deve ser 401 (Não Autorizado) ou 403 (Proibido) e o corpo deve conter uma mensagem de erro.
Como você pode ver, apidog torna muito fácil e conveniente gerar e enviar o cabeçalho de autorização HTTP com suas solicitações de API. Você também pode usar o apidog para testar e depurar outros aspectos de sua API, como os parâmetros, cabeçalhos e corpo de suas solicitações e respostas.
Como Lidar com Erros e Desafios Comuns com o Cabeçalho de Autorização HTTP
Quando você usa o cabeçalho de autorização HTTP para autenticar suas solicitações de API, pode encontrar alguns erros e desafios que precisa lidar adequadamente. Alguns dos erros e desafios comuns são:
Credenciais Inválidas ou Ausentes:
Um dos erros mais comuns com o cabeçalho de autorização HTTP é quando as credenciais são inválidas ou estão ausentes. Isso pode acontecer quando o usuário insere o nome de usuário ou senha errados, o token expira ou é revogado, o hash está incorreto ou foi adulterado, ou o cabeçalho está malformado ou omitido.
Para lidar com esse erro, você deve sempre verificar o código de status da resposta e o cabeçalho WWW-Authenticate do servidor.
Se o código de status for 401 (Não Autorizado), isso significa que o servidor requer autenticação e fornece um desafio que indica os esquemas e parâmetros suportados. Você deve, então, solicitar ao usuário que forneça as credenciais corretas ou obter um novo token e tentar novamente a solicitação com o cabeçalho de autorização apropriado.
Se o código de status for 403 (Proibido), isso significa que o servidor rejeita as credenciais ou o token e não permite o acesso ao recurso. Você deve, então, informar ao usuário a razão e as possíveis ações, como entrar em contato com o administrador ou solicitar uma nova autorização.
Ataques de Repetição:
Outro desafio comum com o cabeçalho de autorização HTTP é quando as credenciais ou o token são reutilizados por um atacante que intercepta a solicitação ou a resposta. Isso pode comprometer a segurança e integridade da API e dos dados. Para prevenir esse desafio, você deve sempre usar HTTPS, que criptografa os dados e impede a escuta.
Você também deve usar esquemas que incluam nonce, timestamp e assinatura, como autenticação digest e JWT, que tornam as credenciais ou o token únicos e verificáveis. Você também deve utilizar esquemas que tenham tempo de expiração e mecanismos de revogação, como OAuth 2.0, que limitam a validade e usabilidade das credenciais ou do token.
Desempenho e Escalabilidade:
Outro desafio comum com o cabeçalho de autorização HTTP é quando o processo de autenticação afeta o desempenho e a escalabilidade da API e do servidor. Isso pode acontecer quando o esquema de autenticação é complexo e intensivo em computação, como hashing, criptografia e assinatura, ou quando a autenticação requer várias solicitações e respostas, como obter e atualizar tokens.
Para superar esse desafio, você deve sempre escolher o esquema de autenticação certo para sua API, com base nos requisitos de segurança, na funcionalidade e na experiência do usuário. Você também deve otimizar o processo de autenticação, como armazenar em cache as credenciais ou o token, usar algoritmos e bibliotecas eficientes e reduzir a sobrecarga da rede.
Documentação e Comunicação:
Outro desafio comum com o cabeçalho de autorização HTTP é quando o esquema de autenticação não está bem documentado e comunicado aos usuários e desenvolvedores da API. Isso pode levar a confusão, erros e frustração.
Para evitar esse desafio, você deve sempre documentar e comunicar o esquema de autenticação para sua API, como o tipo, formato, parâmetros, erros e exemplos do cabeçalho de autorização.
Conclusão
O Cabeçalho de Autorização HTTP é uma maneira poderosa e flexível de proteger suas APIs e fornecer autenticação e autorização para seus clientes. Ao seguir as melhores práticas e dicas discutidas neste post, você pode garantir que suas APIs sejam robustas, confiáveis e compatíveis com os padrões e especificações.
Você também pode usar várias ferramentas e frameworks, como Apidog, para projetar, depurar, desenvolver, simular e testar suas APIs com o Cabeçalho de Autorização HTTP. O Apidog ajuda você a conectar todo o ciclo de vida da API e implementar as melhores práticas para o desenvolvimento de API com foco no design.