Autenticação de acesso básico - Basic access authentication

No contexto de uma transação HTTP , a autenticação de acesso básico é um método para um agente de usuário HTTP (por exemplo, um navegador da web ) fornecer um nome de usuário e uma senha ao fazer uma solicitação. Na autenticação HTTP básica, uma solicitação contém um campo de cabeçalho na forma de Authorization: Basic <credentials>, em que credenciais é a codificação Base64 de ID e senha unidas por dois pontos :.

É especificado no RFC  7617 de 2015, que torna obsoleto o RFC  2617 de 1999.

Recursos

A implementação da autenticação HTTP Basic (BA) é a técnica mais simples para impor controles de acesso a recursos da web porque não requer cookies , identificadores de sessão ou páginas de login; em vez disso, a autenticação HTTP Basic usa campos padrão no cabeçalho HTTP .

Segurança

O mecanismo BA não fornece proteção de confidencialidade para as credenciais transmitidas. Eles são simplesmente codificados com Base64 em trânsito e não são criptografados ou hash de nenhuma forma. Portanto, a autenticação básica é normalmente usada em conjunto com HTTPS para fornecer confidencialidade.

Como o campo BA deve ser enviado no cabeçalho de cada solicitação HTTP, o navegador da web precisa armazenar as credenciais em cache por um período de tempo razoável para evitar solicitar constantemente ao usuário seu nome de usuário e senha. A política de cache difere entre os navegadores.

O HTTP não fornece um método para um servidor da web instruir o cliente a "desconectar" o usuário. No entanto, existem vários métodos para limpar as credenciais armazenadas em cache em determinados navegadores da web. Uma delas é redirecionar o usuário para uma URL no mesmo domínio, usando credenciais intencionalmente incorretas. No entanto, esse comportamento é inconsistente entre vários navegadores e versões de navegadores. O Microsoft Internet Explorer oferece um método JavaScript dedicado para limpar credenciais em cache:

<script>document.execCommand('ClearAuthenticationCache');</script>

Em navegadores modernos, as credenciais em cache para autenticação básica são normalmente apagadas ao limpar o histórico de navegação. A maioria dos navegadores permite que os usuários excluam especificamente apenas as credenciais, embora a opção possa ser difícil de encontrar e normalmente limpa as credenciais de todos os sites visitados.

Protocolo

Lado do servidor

Quando o servidor deseja que o agente do usuário se autentique em relação ao servidor após receber uma solicitação não autenticada, ele deve enviar uma resposta com uma linha de status HTTP 401 Unauthorized e um campo de cabeçalho WWW-Authenticate .

O campo de cabeçalho WWW-Authenticate para autenticação básica é construído da seguinte maneira:

WWW-Authenticate: Basic realm="User Visible Realm"

O servidor pode optar por incluir o parâmetro charset do RFC  7617 :

WWW-Authenticate: Basic realm="User Visible Realm", charset="UTF-8"

Este parâmetro indica que o servidor espera que o cliente use UTF-8 para codificar nome de usuário e senha (veja abaixo).

Lado do cliente

Quando o agente do usuário deseja enviar credenciais de autenticação ao servidor, ele pode usar o campo de cabeçalho Autorização .

O campo de cabeçalho de autorização é construído da seguinte maneira:

  1. O nome de usuário e a senha são combinados com dois pontos (:). Isso significa que o próprio nome de usuário não pode conter dois pontos.
  2. A string resultante é codificada em uma seqüência de octetos. O conjunto de caracteres a ser usado para esta codificação não é especificado por padrão, desde que seja compatível com US-ASCII, mas o servidor pode sugerir o uso de UTF-8 enviando o parâmetro charset .
  3. A string resultante é codificada usando uma variante de Base64 (+ / e com preenchimento).
  4. O método de autorização e um espaço (por exemplo, "Básico") são anexados à string codificada.

Por exemplo, se o navegador usar Aladdin como nome de usuário e open sesame como senha, o valor do campo será a codificação Base64 de Aladdin: open sesame ou QWxhZGRpbjpvcGVuIHNlc2FtZQ == . Em seguida, o campo de cabeçalho de autorização aparecerá como:

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

Veja também

Referências e notas

links externos