RFC Bearer Token (RFC 6750) | API | CSharp
- RFC Bearer Token (RFC 6750) | API | CSharp
Visão Geral
A RFC 6750, definida pela IETF, especifica o uso de Bearer Tokens para autenticação em requisições HTTP, principalmente no contexto do OAuth 2.0.
O conceito central é:
- Um Bearer Token é um token de acesso que concede autorização a quem o possui
- Não exige prova de posse (como chave privada ou assinatura adicional)
- Quem "carrega" (bearer) o token tem acesso
Definição de Bearer Token
Um Bearer Token é:
- Um access token emitido por um Authorization Server
- Utilizado para acessar recursos protegidos
- Transportado em requisições HTTP
Formato padrão:
Authorization: Bearer <token>
A palavra "Bearer" é obrigatória?
Não — a palavra "Bearer" não é obrigatória tecnicamente, mas é obrigatória quando você decide seguir o padrão da RFC 6750 / OAuth2.
Interpretação correta
"Bearer"é um authentication scheme do headerAuthorization- Ele indica ao servidor como interpretar o token
- Sem ele, o servidor não sabe qual estratégia aplicar
Quando é obrigatório
- Ao usar OAuth 2.0
- Ao seguir a RFC 6750
- Ao integrar com gateways e provedores padrão
Exemplo válido:
Authorization: Bearer abc123
Quando não é obrigatório
Se você controla toda a stack (cliente + servidor), pode usar outros formatos:
Sem scheme
Authorization: abc123
Scheme customizado
Authorization: Token abc123
Header customizado
X-Auth-Token: abc123
Impacto de não usar "Bearer"
- Quebra compatibilidade com ferramentas padrão
- Gateways não reconhecem automaticamente
- Exige implementação manual de parsing
- Reduz interoperabilidade com terceiros
Forma de Envio do Token
A RFC define três formas principais:
Header Authorization (RECOMENDADO)
GET /resource HTTP/1.1
Host: api.exemplo.com
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Query Parameter (NÃO RECOMENDADO)
GET /resource?access_token=abc123
Form-Encoded Body
POST /resource
Content-Type: application/x-www-form-urlencoded
access_token=abc123
Respostas de Erro
Token ausente ou inválido
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer realm="example"
Token inválido
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer error="invalid_token"
Permissão insuficiente
HTTP/1.1 403 Forbidden
WWW-Authenticate: Bearer error="insufficient_scope"
Campos do WWW-Authenticate
realmerrorerror_descriptionerror_uri
Exemplo:
WWW-Authenticate: Bearer realm="api",
error="invalid_token",
error_description="The access token expired"
Segurança
Principais riscos
- Interceptação (MITM)
- Vazamento em logs
- Replay attack
Boas práticas
- Usar HTTPS obrigatoriamente
- Não enviar token em query string
- Expiração curta
- Uso de refresh token
- Validação de escopo
Relação com JWT
Bearer Tokens frequentemente utilizam JWT.
Exemplo:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Importante:
- A RFC não exige JWT
- O token pode ser opaco ou estruturado
Fluxo Simplificado
- Cliente autentica no Authorization Server
- Recebe access_token
- Envia token na requisição
- Resource Server valida
- Retorna resposta
Exemplo com curl
curl http://api.exemplo.com/resource \
-H "Authorization: Bearer abc123"
Uso com API Gateway
Gateways como:
- Apache APISIX
- Kong
Podem:
- Validar presença do token
- Verificar expiração
- Validar assinatura
- Aplicar políticas de acesso
Casos de Uso
- APIs REST protegidas
- Microservices
- Integrações externas
- Aplicações web/mobile
Observações Técnicas
- Bearer não prova posse (apenas portador)
- Não possui revogação nativa
- Depende de transporte seguro
- Deve ser combinado com OAuth2/OpenID Connect