Ejemplos: cálculos de firma en AWS Signature Version 4
Temas
Para las solicitudes autenticadas, a menos que utilice los AWS SDK, debe escribir código para calcular las firmas que brindan información de autenticación en las solicitudes. El cálculo de firmas en AWS Signature Version 4 (consulte Autenticación de solicitudes (AWS Signature Version 4)) puede ser una tarea compleja, por lo que recomendamos que se usen los AWS SDK siempre que sea posible.
En esta sección, se proporcionan ejemplos de cálculos de firmas escritos en Java y C#. Los ejemplos de código envían las siguientes solicitudes y utilizan el encabezado de HTTP Authorization para proporcionar información de autenticación:
-
Objeto PUT: ejemplos independientes ilustran la carga de la carga útil completa una sola vez y la carga de la carga útil en fragmentos. Para obtener información sobre el uso del encabezado de Authorization para la autenticación, consulte Autenticación de solicitudes: uso del encabezado de Authorization (AWS Signature Version 4).
-
Objeto GET: este ejemplo genera una URL prefirmada para obtener un objeto. Los parámetros de consulta proporcionan la firma y otra información de autenticación. Los usuarios pueden pegar una URL prefirmada en el navegador para recuperar el objeto o puede usar la URL para crear un enlace en el que se pueda hacer clic. Para obtener información acerca del uso de parámetros de consulta para autenticación, consulte Autenticación de solicitudes: uso de parámetros de consulta (AWS Signature Version 4).
En el resto de esta sección, se describen los ejemplos en Java y C#. Los temas incluyen instrucciones para descargar los ejemplos y ejecutarlos.
Ejemplos de cálculos de firma mediante Java (AWS Signature Version 4)
El ejemplo de Java que muestra el cálculo de firmas se puede descargar en https://docs.aws.amazon.com/AmazonS3/latest/API/samples/AWSS3SigV4JavaSamples.zip. Tenga en cuenta que en estos ejemplos se usa el AWS SDK para Java v1 y se recomienda usar el AWS SDK para Java v2 para aplicaciones nuevas. En RunAllSamples.java, la función main() ejecuta solicitudes de muestra para crear un objeto, recuperar un objeto y crear una URL prefirmada para el objeto. En el ejemplo se crea un objeto a partir de la cadena de texto proporcionada en el código:
PutS3ObjectSample.putS3Object(bucketName, regionName, awsAccessKey, awsSecretKey); GetS3ObjectSample.getS3Object(bucketName, regionName, awsAccessKey, awsSecretKey); PresignedUrlSample.getPresignedUrlToS3Object(bucketName, regionName, awsAccessKey, awsSecretKey); PutS3ObjectChunkedSample.putS3ObjectChunked(bucketName, regionName, awsAccessKey, awsSecretKey);
Prueba de los ejemplos en un ordenador basado en Linux
Las instrucciones siguientes son para el sistema operativo Linux.
-
En un terminal, vaya al directorio que contiene
AWSS3SigV4JavaSamples.zip. -
Descomprima el archivo .zip.
-
En un editor de texto, abra el archivo
./com/amazonaws/services/s3/samples/RunAllSamples.java. Actualice el código con la siguiente información:El nombre del bucket en el que se puede crear el nuevo objeto.
nota
Los ejemplos utilizan una solicitud de tipo alojamiento virtual para acceder al bucket. Para evitar posibles errores, asegúrese de que el nombre del bucket cumpla con las reglas de nomenclatura de buckets, tal como se explica en Restricciones y limitaciones de los buckets de la Guía del usuario de Amazon Simple Storage Service.
Región de AWS donde se encuentra el bucket.
Si el bucket está en la región Este de EE. UU. (Norte de Virginia), utilice us-east-1 para especificar la región. Para ver una lista de otras Regiones de AWS, vaya a Amazon Simple Storage Service (S3), en Referencia general de AWS.
-
Compile el código de origen y guarde las clases compiladas en el directorio
bin/.javac -d bin -source 6 -verbose com -
Cambie el directorio a
bin/y, a continuación, ejecuteRunAllSamples.java com.amazonaws.services.s3.sample.RunAllSamplesEl código ejecuta todos los métodos en
main(). Para cada solicitud, el resultado mostrará la solicitud canónica, la cadena a firmar y la firma.
Ejemplos de cálculos de firma mediante C# (AWS Signature Version 4)
El ejemplo de C# que muestra el cálculo de firmas se puede descargar en https://docs.aws.amazon.com/AmazonS3/latest/API/samples/AmazonS3SigV4_Samples_CSharp.zip. Tenga en cuenta que en estos ejemplos se usa el AWS SDK para .Net v1 y se recomienda usar el AWS SDK para .Net v3 para aplicaciones nuevas. En Program.cs, la función main() ejecuta solicitudes de muestra para crear un objeto, recuperar un objeto y crear una URL prefirmada para el objeto. El código para el cálculo de la firma se encuentra en la carpeta \Signers.
PutS3ObjectSample.Run(awsRegion, bucketName, "MySampleFile.txt"); Console.WriteLine("\n\n************************************************"); PutS3ObjectChunkedSample.Run(awsRegion, bucketName, "MySampleFileChunked.txt"); Console.WriteLine("\n\n************************************************"); GetS3ObjectSample.Run(awsRegion, bucketName, "MySampleFile.txt"); Console.WriteLine("\n\n************************************************"); PresignedUrlSample.Run(awsRegion, bucketName, "MySampleFile.txt");
Prueba de los ejemplos con Microsoft Visual Studio 2010 o versiones posteriores
-
Descomprima el archivo .zip.
-
Inicie Visual Studio y, a continuación, abra el archivo .sln.
-
Actualice el archivo App.config con credenciales de seguridad válidas.
-
Actualice el código de la siguiente manera:
-
En
Program.cs, proporcione el nombre del bucket y la Región de AWS donde se encuentra el bucket. El ejemplo crea un objeto en este bucket.
-
-
Ejecute el código.
-
Para comprobar que se creó el objeto, copie la URL prefirmada que crea el programa y péguela en una ventana del navegador.