Firma de solicitudes de AWS con Signature Version 4 - Referencia general de AWS

Si proporcionásemos una traducción de la versión en inglés de la guía, prevalecerá la versión en inglés de la guía si hubiese algún conflicto. La traducción se proporciona mediante traducción automática.

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:

  • Tarea 1: Crear una solicitud canónica para Signature Version 4

    Organice el contenido de la solicitud (host, acción, encabezados, etc.) en un formato estándar (canónico). La solicitud canónica es uno de los datos de entrada utilizados con el fin de crear una cadena para firmar.

  • Tarea 2: Crear una cadena para firmar para Signature Version 4

    Cree una cadena para firmar con la solicitud canónica e información adicional, como el algoritmo, la fecha de la solicitud, el ámbito de credenciales y el resumen (hash) de la solicitud canónica.

  • Tarea 3: Calcular la firma para AWS Signature Version 4

    Genere una clave de firma llevando a cabo una sucesión de operaciones hash con clave (operaciones HMAC) en la fecha de la solicitud, la región y el servicio, con su clave de acceso secreta de AWS como clave de la operación hash inicial. Una vez generada la clave de firma, se calcula la firma llevando a cabo una operación hash con clave en la cadena para firmar. Utilice la clave de firma generada como clave hash para esta operación.

  • Tarea 4: Añadir la firma a la solicitud HTTP

    Después de calcular la firma, añádasela a un encabezado HTTP o a la cadena de consulta de la solicitud.

importante

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 adicionales

Los siguientes recursos 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.