

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Démo d'authentification mutuelle CoreHTTP
<a name="core-http-ma-demo"></a>

**Important**  <a name="deprecation-message-demo"></a>
Cette démo est hébergée sur le référentiel Amazon-FreeRTOS qui est obsolète. Nous vous recommandons de [commencer ici](freertos-getting-started-modular.md) lorsque vous créez un nouveau projet. Si vous possédez déjà un projet FreeRTOS basé sur le référentiel Amazon-FreeRTOS, désormais obsolète, consultez le. [Guide de migration du référentiel Github d'Amazon-FreeRTOS](github-repo-migration.md)

## Introduction
<a name="core-http-ma-demo-intro"></a>

Le projet de démonstration CoreHTTP (Mutual Authentication) vous montre comment établir une connexion à un serveur HTTP à l'aide du protocole TLS avec authentification mutuelle entre le client et le serveur. Cette démonstration utilise une implémentation d'interface de transport basée sur MBEDTLS pour établir une connexion TLS authentifiée par le serveur et le client, et illustre un flux de travail de réponse aux demandes en HTTP.

**Note**  
Pour configurer et exécuter les démos de FreeRTOS, suivez les étapes décrites dans. [Commencez avec FreeRTOS](freertos-getting-started.md)

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

Cette démonstration crée une tâche d'application unique avec des exemples qui montrent comment effectuer les opérations suivantes :
+ Connectez-vous au serveur HTTP sur le AWS IoT point de terminaison.
+ Envoyez une requête POST.
+ Recevez la réponse.
+ Déconnectez-vous du serveur.

Une fois ces étapes terminées, la démo génère un résultat similaire à la capture d'écran suivante.

![\[Sortie du journal indiquant l'initialisation de la AWS IoT démonstration, l'établissement de sessions TLS, les requêtes HTTP POST et les mesures de mémoire indiquant la réussite de la démonstration.\]](http://docs.aws.amazon.com/fr_fr/freertos/latest/userguide/images/coreHTTP.output.png)


La AWS IoT console génère une sortie similaire à la capture d'écran suivante.

![\[AWS IoT console affichant le message « Bonjour depuis AWS IoT la console » publié sur un sujet le 20 novembre 2020 à 19:09:09 UTC.\]](http://docs.aws.amazon.com/fr_fr/freertos/latest/userguide/images/coreHTTP.console.png)


## Organisation du code source
<a name="core-http-s3-ma-demo-source-code-organization"></a>

Le fichier source de démonstration est nommé `http_demo_mutual_auth.c` et se trouve dans le `freertos/demos/coreHTTP/` répertoire et sur le [ GitHub](https://github.com/aws/amazon-freertos/blob/main/demos/coreHTTP/http_demo_mutual_auth.c)site Web.

## Connexion au serveur 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)fonction tente d'établir une connexion TLS mutuellement authentifiée avec le serveur AWS IoT HTTP. Si la connexion échoue, elle réessaie après un délai d'expiration. La valeur du délai d'attente augmente de façon exponentielle jusqu'à ce que le nombre maximum de tentatives soit atteint ou que la valeur maximale du délai d'attente soit atteinte. La `RetryUtils_BackoffAndSleep` fonction fournit des valeurs de délai d'attente qui augmentent de façon exponentielle et revient `RetryUtilsRetriesExhausted` lorsque le nombre maximum de tentatives a été atteint. La `connectToServerWithBackoffRetries` fonction renvoie un état d'échec si la connexion TLS au broker ne peut pas être établie après le nombre de tentatives configuré.

## Envoi d'une requête HTTP et réception de la réponse
<a name="core-http-ma-demo-send-receive"></a>

La fonction [ prvSendHttpRequest](https://github.com/aws/amazon-freertos/blob/main/demos/coreHTTP/http_demo_mutual_auth.c#L402-L507) montre comment envoyer une requête POST au serveur AWS IoT HTTP. Pour plus d'informations sur l'envoi d'une requête à l'API REST dans AWS IoT, voir [Protocoles de communication entre appareils - HTTPS](https://docs.aws.amazon.com/iot/latest/developerguide/http.html). La réponse est reçue avec le même appel d'API CoreHTTP,`HTTPClient_Send`. 