Métodos de autenticação - AWS Identity and Access Management

Métodos de autenticação

Importante

A menos que você esteja usando AWS SDKs ou a CLI, é necessário escrever código para calcular assinaturas que forneçam informações de autenticação em suas solicitações. O cálculo da assinatura no AWS Signature Versão 4 pode ser uma tarefa complexa, então é recomendável usar os AWS SDKs ou a CLI sempre que possível.

É possível expressar informações de autenticação usando um dos métodos a seguir.

Cabeçalho HTTP de autorização

O cabeçalho HTTP Authorization é o método mais usado para autenticar uma solicitação. Todas as operações da API REST (exceto para carregamentos baseados em navegador que usam solicitações POST) requerem esse cabeçalho. Para obter mais informações sobre o valor do cabeçalho de autorização, como calcular a assinatura e opções relacionadas, consulte a página Authenticating Requests: Using the Authorization Header (AWS Signature Version 4) na Referência de APIs do Amazon S3.

Veja a seguir um exemplo de um valor de cabeçalho Authorization. As quebras de linha foram adicionadas a este exemplo somente para facilitar a leitura. Em seu código, o cabeçalho deve ser uma string contínua. Não use vírgula entre o algoritmo e a credencial, mas os outros elementos devem ser separados por vírgulas.

Authorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20130524/us-east-1/s3/aws4_request, SignedHeaders=host;range;x-amz-date, Signature=fe5f80f77d5fa3beca038a248ff027d0445342fe2855ddc963176630326f1024

A tabela a seguir descreve os vários componentes do valor do cabeçalho de autorização do exemplo anterior:

Componente Descrição

Autorização

O algoritmo que foi usado para calcular a assinatura. É necessário informar esse valor ao usar o AWS Signature Version 4 para autenticação. A string especifica o AWS Signature Version 4 (AWS4) e o algoritmo de assinatura (HMAC-SHA256).

Credential

Seu ID de chave de acesso e as informações do escopo, como a data, a região e o serviço que foram usados para calcular a assinatura.

Essa string tem a seguinte forma:

<your-access-key-id>/<date>/<aws-region>/<aws-service>/aws4_request

Em que: o valor da <date> é especificado usando o formato AAAAMMDD. O valor de <aws-service> é s3 ao enviar uma solicitação ao Amazon S3.

SignedHeaders

Uma lista separada por ponto e vírgula dos cabeçalhos de solicitação usados para computar a Signature. A lista contém somente nomes de cabeçalho, e os nomes dos cabeçalhos devem estar em letras minúsculas. Por exemplo: host;range;x-amz-date

Assinatura

A assinatura de 256 bits expressa como 64 caracteres hexadecimais minúsculos. Por exemplo:fe5f80f77d5fa3beca038a248ff027d0445342fe2855ddc963176630326f1024

Os cálculos da assinatura variam de acordo com a opção escolhida para transferência de carga útil.

Parâmetros de string de consulta

É possível usar uma string de consulta para expressar uma solicitação completa em um só URL. Nesse caso, utilize parâmetros de consulta para fornecer informações de solicitação, inclusive as informações de autenticação. Como a solicitação de assinatura faz parte do URL, esse tipo de URL muitas vezes é chamado de URL pré-assinado. É possível usar URLs pré-assinados para incorporar links clicáveis em HTML, que podem ser válidos por até sete dias. Para obter mais informações, consulte Authenticating Requests: Using Query Parameters (AWS Signature Version 4) na Referência de APIs do Amazon S3.

O exemplo a seguir é um URL pré-assinado. As quebras de linha foram adicionadas a este exemplo somente para facilitar a leitura:

https://s3.amazonaws.com/examplebucket/test.txt ? X-Amz-Algorithm=AWS4-HMAC-SHA256 & X-Amz-Credential=<your-access-key-id>/20130721/us-east-1/s3/aws4_request & X-Amz-Date=20130721T201207Z & X-Amz-Expires=86400 & X-Amz-SignedHeaders=host &X-Amz-Signature=<signature-value>
nota

O valor de X-Amz-Credential no URL exibe o caractere “/” somente para facilitar a leitura. Na prática, deve ser codificado como %2F. Por exemplo:

&X-Amz-Credential=<your-access-key-id>%2F20130721%2Fus-east-1%2Fs3%2Faws4_request

A tabela a seguir descreve os parâmetros de consulta no URL que fornecem informações de autenticação.

Nome de parâmetro de string de consulta Descrição

X-Amz-Algorithm

Identifica a versão do AWS Signature e o algoritmo usado para calcular a assinatura. No AWS Signature Version 4, defina esse valor de parâmetro como AWS4-HMAC-SHA256. Essa string identifica o AWS Signature Verion 4 (AWS4) e o algoritmo HMAC-SHA256 (HMAC-SHA256).

X-Amz-Credential

Além do ID da chave de acesso, esse parâmetro também fornece o escopo (região e serviço da AWS) para os quais a assinatura é válida. O valor deve corresponder ao escopo usado nos cálculos de assinatura, abordados na seção a seguir.

A forma geral para esse valor de parâmetro é:

<your-access-key-id>/<date>/<AWS Region>/<AWS-service>/aws4_request

Por exemplo: AKIAIOSFODNN7EXAMPLE/20130721/us-east-1/s3/aws4_request

Para obter uma lista de strings regionais da AWS, consulte Regional Endpoints na Referência geral da AWS.

X-Amz-Date

O formato de data e hora deve seguir o padrão ISO 8601 e deve ter a formatação yyyyMMddTHHmmssZ. Por exemplo, se a data e a hora forem “08/01/2016 15:32:41.982-700”, elas primeiro deverão ser convertidas em UTC (Tempo Universal Coordenado) e depois enviadas como “20160801T223241Z”.

X-Amz-Expires

Fornece o período, em segundos, de validade do URL pré-assinado gerado. Por exemplo, 86400 (24 horas). Esse valor é um inteiro. O valor mínimo que você pode definir é 1 e o máximo é 604800 (sete dias). O URL pré-assinado pode ser válido por no máximo sete dias, pois a chave de assinatura usada no cálculo da assinatura é válida por até sete dias.

X-Amz-SignedHeaders

Lista os cabeçalhos usados para calcular a assinatura. Os seguintes cabeçalhos são obrigatórios para os cálculos da assinatura:

  • O cabeçalho do host HTTP.

  • Todo cabeçalho x-amz-* que você pretende adicionar à solicitação.

Para maior segurança, é necessário assinar todos os cabeçalhos de solicitação que pretende incluir na solicitação.

X-Amz-Signature

Fornece a assinatura para autenticar a solicitação. Essa assinatura deve corresponder à assinatura calculada pelo serviço; caso contrário, o serviço negará a solicitação. Por exemplo, 733255ef022bec3f2a8701cd61d4b371f3f28c9f193a1f02279211d48d5193d7

Os cálculos de assinatura serão descritos na seção a seguir.

X-Amz-Security-Token

Parâmetro de credencial opcional ao usar credenciais provenientes do serviço STS.