

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Demostración de la autenticación mutua de coreHTTP
<a name="core-http-ma-demo"></a>

**importante**  <a name="deprecation-message-demo"></a>
Esta demostración está alojada en el repositorio de Amazon-FreeRTOS, que está en desuso. Recomendamos [empezar por aquí](freertos-getting-started-modular.md) al crear un nuevo proyecto. Si ya tiene un proyecto FreeRTOS existente basado en el repositorio Amazon FreeRTOS, ahora obsoleto, consulte [Guía de migración del repositorio Github de Amazon-FreeRTOS](github-repo-migration.md).

## Introducción
<a name="core-http-ma-demo-intro"></a>

El proyecto de demostración coreHTTP (Autenticación mutua) muestra cómo establecer una conexión con un servidor HTTP mediante TLS con autenticación mutua entre el cliente y el servidor. Esta demostración utiliza una implementación de interfaz de transporte basada en mbedTLS para establecer una conexión TLS autenticada por el servidor y el cliente, y muestra un flujo de trabajo de respuesta a solicitudes en HTTP.

**nota**  
Para configurar y ejecutar las demostraciones de FreeRTOS, siga los pasos que se indican en [Introducción a FreeRTOS](freertos-getting-started.md).

## Funcionalidad
<a name="core-http-ma-demo-functionality"></a>

Esta demostración crea una tarea de aplicación única con ejemplos que muestran cómo realizar lo siguiente:
+ Conéctese al servidor HTTP del AWS IoT punto final.
+ Enviar una solicitud POST.
+ Recibir la respuesta.
+ Desconectarse del servidor.

Tras completar estos pasos, la demostración genera una salida similar a la de la siguiente captura de pantalla.

![\[El resultado del registro muestra la inicialización de la AWS IoT demostración, el establecimiento de la sesión de TLS, las solicitudes HTTP POST y las métricas de memoria que indican que la demostración se ha completado correctamente.\]](http://docs.aws.amazon.com/es_es/freertos/latest/userguide/images/coreHTTP.output.png)


La AWS IoT consola genera un resultado similar al de la siguiente captura de pantalla.

![\[AWS IoT consola que muestra el mensaje «Hola desde la AWS IoT consola» publicado sobre un tema el 20 de noviembre de 2020 a las 19:09:09 UTC.\]](http://docs.aws.amazon.com/es_es/freertos/latest/userguide/images/coreHTTP.console.png)


## Organización del código fuente
<a name="core-http-s3-ma-demo-source-code-organization"></a>

El archivo fuente de la demostración lleva un nombre `http_demo_mutual_auth.c` y se encuentra en el `freertos/demos/coreHTTP/` directorio y en el [ GitHub](https://github.com/aws/amazon-freertos/blob/main/demos/coreHTTP/http_demo_mutual_auth.c)sitio web.

## Conexión al servidor AWS IoT HTTP
<a name="core-http-ma-demo-connecting"></a>

La [ connectToServerWithBackoffRetries](https://github.com/aws/amazon-freertos/blob/main/demos/common/http_demo_helpers/http_demo_utils.c#L131-L170)función intenta establecer una conexión TLS mutuamente autenticada con el servidor AWS IoT HTTP. Si la conexión falla, se vuelve a intentar cuando se agota el tiempo de espera. El valor de tiempo de espera aumenta exponencialmente hasta que se alcanza el número máximo de intentos o se alcanza el valor de tiempo de espera máximo. La función `RetryUtils_BackoffAndSleep` proporciona valores de tiempo de espera que aumentan exponencialmente y devuelve `RetryUtilsRetriesExhausted` cuando se alcanza el número máximo de intentos. La función `connectToServerWithBackoffRetries` devuelve un estado de error si no se puede establecer la conexión TLS con el agente tras el número de intentos configurado.

## Envío de una solicitud HTTP y recepción de la respuesta
<a name="core-http-ma-demo-send-receive"></a>

La función de [ prvSendHttpsolicitud](https://github.com/aws/amazon-freertos/blob/main/demos/coreHTTP/http_demo_mutual_auth.c#L402-L507) muestra cómo enviar una solicitud POST al servidor AWS IoT HTTP. Para obtener más información sobre cómo realizar una solicitud a la API REST AWS IoT, consulte [Protocolos de comunicación del dispositivo: HTTPS](https://docs.aws.amazon.com/iot/latest/developerguide/http.html). La respuesta se recibe con la misma llamada a la API coreHTTP, `HTTPClient_Send`. 