

# Ejemplos: cálculos de firma en AWS Signature Version 4
<a name="sig-v4-examples-using-sdks"></a>

**Topics**
+ [Ejemplos de cálculos de firma mediante Java (AWS Signature Version 4)](#sig-v4-examples-using-sdk-java)
+ [Ejemplos de cálculos de firma mediante C\# (AWS Signature Version 4)](#sig-v4-examples-using-sdk-dotnet)

 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)](sig-v4-authenticating-requests.md)) 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)](sigv4-auth-using-authorization-header.md).
+ **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)](sigv4-query-string-auth.md). 

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)
<a name="sig-v4-examples-using-sdk-java"></a>

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](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](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/home.html) 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.

1. En un terminal, vaya al directorio que contiene `AWSS3SigV4JavaSamples.zip`.

1. Descomprima el archivo .zip. 

1. 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html) 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)](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region), en *Referencia general de AWS*. 

1. Compile el código de origen y guarde las clases compiladas en el directorio `bin/`.

   ```
   javac -d bin -source 6 -verbose com
   ```

1. Cambie el directorio a `bin/` y, a continuación, ejecute `RunAllSamples`.

    

   ```
   java com.amazonaws.services.s3.sample.RunAllSamples
   ```

   El 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)
<a name="sig-v4-examples-using-sdk-dotnet"></a>

 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](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](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/home.html) 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**

1. Descomprima el archivo .zip.

1.  Inicie Visual Studio y, a continuación, abra el archivo .sln.

1. Actualice el archivo App.config con credenciales de seguridad válidas.

1. 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.

1. Ejecute el código.

1.  Para comprobar que se creó el objeto, copie la URL prefirmada que crea el programa y péguela en una ventana del navegador. 