Amazon Web Services
Referencia general (Version 1.0)

Firma de solicitudes de AWS con Signature Version 4

Esta sección explica cómo crear una firma y añadirla a una solicitud HTTP para AWS.


        Proceso de Signature Version 4

Resumen de pasos de firma

Para crear una solicitud firmada, lleve a cabo las tareas siguientes:

nota

Los AWS SDK controlan el proceso de cálculo de firmas automáticamente, para que no tenga que llevarlo a cabo manualmente. Para obtener más información, consulte Herramientas para Amazon Web Services.

Recursos de firma adicionales

Los siguientes recursos adicionales ilustran diversos aspectos del proceso de firma:

Aspecto de una firma en una solicitud

En el siguiente ejemplo se muestra el aspecto que puede tener una solicitud HTTPS enviada desde el cliente a AWS, sin ninguna información de firma.

GET https://iam.amazonaws.com/?Action=ListUsers&Version=2010-05-08 HTTP/1.1 Content-Type: application/x-www-form-urlencoded; charset=utf-8 Host: iam.amazonaws.com X-Amz-Date: 20150830T123600Z

Una vez completadas las tareas de firma, se añade la información de autenticación a la solicitud. Puede añadir la información de autenticación de dos formas:

Encabezado Authorization

Puede añadir la información de autenticación a la solicitud con un encabezado Authorization. Aunque el encabezado HTTP se denomina Authorization, en realidad se utiliza la información de firma para la autenticación con el fin de determinar la procedencia de la solicitud.

El encabezado Authorization incluye la siguiente información:

  • Algoritmo utilizado para firmar (AWS4-HMAC-SHA256)

  • Ámbito de credenciales (con el ID de clave de acceso)

  • Lista de encabezados firmados

  • Firma calculada. La firma se basa en la información de la solicitud y se usa la clave de acceso secreta de AWS para generar la firma. La firma confirma su identidad a AWS.

En el siguiente ejemplo se muestra el aspecto que podría tener la solicitud anterior después de haber creado la información de firma y habérsela añadido a la solicitud en el encabezado Authorization.

GET https://iam.amazonaws.com/?Action=ListUsers&Version=2010-05-08 HTTP/1.1 Authorization: AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/iam/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature=5d672d79c15b13162d9279b0855cfba6789a8edb4c82c400e06b5924a6f2b5d7 content-type: application/x-www-form-urlencoded; charset=utf-8 host: iam.amazonaws.com x-amz-date: 20150830T123600Z

Cadena de consulta

En lugar de añadir la información de autenticación mediante un encabezado de solicitud HTTP, puede incluirla en la cadena de consulta. La cadena de consulta contiene todo lo que forma parte de la solicitud, incluidos el nombre y los parámetros de la acción, la fecha y la información de autenticación.

En el siguiente ejemplo se muestra cómo podría construir una solicitud GET con la acción y la información de autenticación de la cadena de consulta.

GET https://iam.amazonaws.com?Action=ListUsers&Version=2010-05-08&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIDEXAMPLE%2F20150830%2Fus-east-1%2Fiam%2Faws4_request&X-Amz-Date=20150830T123600Z&X-Amz-Expires=60&X-Amz-SignedHeaders=content-type%3Bhost&X-Amz-Signature=37ac2f4fde00b0ac9bd9eadeb459b1bbee224158d66e7ae5fcadb70b2d181d02 HTTP/1.1 content-type: application/x-www-form-urlencoded; charset=utf-8 host: iam.amazonaws.com

Solicitudes GET y POST en la API de consulta

La API de consulta compatible con muchos servicios de AWS permite realizar solicitudes mediante los métodos HTTP GET o POST. (En la API de consulta, puede utilizar GET incluso para solicitudes que cambian el estado; es decir, la API de consulta no es intrínsecamente RESTful.) Dado que las solicitudes GET pasan parámetros en la cadena de consulta, están limitados a la longitud máxima de una URL. Si una solicitud incluye una carga grande (por ejemplo, en caso de cargar una política de IAM de gran tamaño o de enviar muchos parámetros en formato JSON para una solicitud de DynamoDB), se suele utilizar una solicitud POST.

El proceso de firma es el mismo para ambos tipos de solicitudes.