

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Demo sull'autenticazione reciproca CoreHTTP
<a name="core-http-ma-demo"></a>

**Importante**  <a name="deprecation-message-demo"></a>
Questa demo è ospitata nel repository Amazon-FreeRTOS che è obsoleto. Ti consigliamo di [iniziare da qui quando crei un nuovo progetto](freertos-getting-started-modular.md). Se disponi già di un progetto FreeRTOS esistente basato sull'ormai obsoleto repository Amazon-FreerTOS, consulta il. [Guida alla migrazione del repository Github di Amazon-FreeRTOS](github-repo-migration.md)

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

Il progetto dimostrativo CoreHTTP (Mutual Authentication) mostra come stabilire una connessione a un server HTTP utilizzando TLS con autenticazione reciproca tra il client e il server. Questa demo utilizza un'implementazione dell'interfaccia di trasporto basata su MBEDTLS per stabilire una connessione TLS autenticata da server e client e dimostra un flusso di lavoro di risposta alle richieste in HTTP.

**Nota**  
Per configurare ed eseguire le demo di FreerTOS, segui i passaggi indicati. [Inizia con FreerTOS](freertos-getting-started.md)

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

Questa demo crea una singola attività applicativa con esempi che mostrano come completare quanto segue:
+ Connect al server HTTP sull' AWS IoT endpoint.
+ Invia una richiesta POST.
+ Ricevi la risposta.
+ Disconnettiti dal server.

Dopo aver completato questi passaggi, la demo genera un output simile alla schermata seguente.

![Output di registro che mostra l'inizializzazione della AWS IoT demo, l'istituzione della sessione TLS, le richieste HTTP POST e le metriche di memoria che indicano il completamento della demo con successo.](http://docs.aws.amazon.com/it_it/freertos/latest/userguide/images/coreHTTP.output.png)


La AWS IoT console genera un output simile alla schermata seguente.

![AWS IoT console che mostra il messaggio «Hello from AWS IoT console» pubblicato su un argomento il 20 novembre 2020 alle 19:09:09 UTC.](http://docs.aws.amazon.com/it_it/freertos/latest/userguide/images/coreHTTP.console.png)


## Organizzazione del codice sorgente
<a name="core-http-s3-ma-demo-source-code-organization"></a>

Il file sorgente della demo è denominato `http_demo_mutual_auth.c` e può essere trovato nella `{{freertos}}/demos/coreHTTP/` directory e sul [ GitHub](https://github.com/aws/amazon-freertos/blob/main/demos/coreHTTP/http_demo_mutual_auth.c)sito Web.

## Connessione al server 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)funzione tenta di stabilire una connessione TLS con autenticazione reciproca al server HTTP. AWS IoT Se la connessione fallisce, riprova dopo un timeout. Il valore di timeout aumenta esponenzialmente fino a raggiungere il numero massimo di tentativi o il valore di timeout massimo. La `RetryUtils_BackoffAndSleep` funzione fornisce valori di timeout che aumentano in modo esponenziale e restituisce `RetryUtilsRetriesExhausted` quando è stato raggiunto il numero massimo di tentativi. La `connectToServerWithBackoffRetries` funzione restituisce uno stato di errore se la connessione TLS al broker non può essere stabilita dopo il numero di tentativi configurato.

## Invio di una richiesta HTTP e ricezione della risposta
<a name="core-http-ma-demo-send-receive"></a>

La funzione [ prvSendHttpRequest](https://github.com/aws/amazon-freertos/blob/main/demos/coreHTTP/http_demo_mutual_auth.c#L402-L507) dimostra come inviare una richiesta POST al server AWS IoT HTTP. Per ulteriori informazioni su come effettuare una richiesta all'API REST in AWS IoT, vedete [Device communication protocol - HTTPS](https://docs.aws.amazon.com/iot/latest/developerguide/http.html). La risposta viene ricevuta con la stessa chiamata all'API CoreHTTP,`HTTPClient_Send`. 