

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Demonstração de autenticação mútua da coreHTTP
<a name="core-http-ma-demo"></a>

**Importante**  <a name="deprecation-message-demo"></a>
Essa demonstração está hospedada no repositório Amazon-FreeRTOS, que está preterido. Recomendamos [começar aqui](freertos-getting-started-modular.md) ao criar um novo projeto. Se você já tem um projeto FreeRTOS existente baseado no repositório Amazon-FreeRTOS que está preterido, consulte o [Guia de migração do repositório Github do Amazon FreeRTOS](github-repo-migration.md).

## Introdução
<a name="core-http-ma-demo-intro"></a>

O projeto de demonstração da coreHTTP (autenticação mútua) mostra como estabelecer uma conexão com um servidor HTTP usando TLS com autenticação mútua entre o cliente e o servidor. Esta demonstração usa uma implementação de interface de transporte baseada em mbedTLS para estabelecer uma conexão TLS autenticada pelo servidor e pelo cliente e demonstra um fluxo de trabalho de resposta à solicitação em HTTP.

**nota**  
Para configurar e executar as demonstrações do FreeRTOS, siga as etapas em [Conceitos básicos do FreeRTOS](freertos-getting-started.md).

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

Essa demonstração cria uma tarefa de aplicação única com exemplos que mostram como concluir o seguinte:
+ Conecte-se ao servidor HTTP no AWS IoT endpoint.
+ Enviar uma solicitação POST.
+ Receber a resposta.
+ Desconectar do servidor.

Depois de concluir essas etapas, a demonstração gera uma saída semelhante à da captura de tela a seguir.

![\[Saída de log mostrando a inicialização da AWS IoT demonstração, o estabelecimento da sessão TLS, as solicitações HTTP POST e as métricas de memória indicando a conclusão bem-sucedida da demonstração.\]](http://docs.aws.amazon.com/pt_br/freertos/latest/userguide/images/coreHTTP.output.png)


O AWS IoT console gera uma saída semelhante à captura de tela a seguir.

![\[AWS IoT console mostrando a mensagem “Olá do AWS IoT console” publicada em um tópico em 20 de novembro de 2020 às 19:09:09 UTC.\]](http://docs.aws.amazon.com/pt_br/freertos/latest/userguide/images/coreHTTP.console.png)


## Organização de código-fonte
<a name="core-http-s3-ma-demo-source-code-organization"></a>

O arquivo fonte de demonstração tem um nome `http_demo_mutual_auth.c` e pode ser encontrado no `freertos/demos/coreHTTP/` diretório e no [ GitHub](https://github.com/aws/amazon-freertos/blob/main/demos/coreHTTP/http_demo_mutual_auth.c)site.

## Conectando-se ao servidor AWS IoT HTTP
<a name="core-http-ma-demo-connecting"></a>

A [ connectToServerWithBackoffRetries](https://github.com/aws/amazon-freertos/blob/main/demos/common/http_demo_helpers/http_demo_utils.c#L131-L170)função tenta fazer uma conexão TLS autenticada mutuamente com o AWS IoT servidor HTTP. Se a conexão falhar, ela tentará novamente após um tempo limite. O valor do tempo limite aumenta exponencialmente até que o número máximo de tentativas ou o valor do tempo limite seja atingido. A função `RetryUtils_BackoffAndSleep` fornece valores de tempo limite aumentando exponencialmente e retorna `RetryUtilsRetriesExhausted` quando o número máximo de tentativas foi atingido. A função `connectToServerWithBackoffRetries` retorna um status de falha se a conexão TLS com o operador não puder ser estabelecida após o número configurado de tentativas.

## Envio de uma solicitação HTTP e recebimento da resposta
<a name="core-http-ma-demo-send-receive"></a>

A função [ prvSendHttpRequest](https://github.com/aws/amazon-freertos/blob/main/demos/coreHTTP/http_demo_mutual_auth.c#L402-L507) demonstra como enviar uma solicitação POST para o servidor AWS IoT HTTP. Para obter mais informações sobre como fazer uma solicitação para a API REST em AWS IoT, consulte [Protocolos de comunicação do dispositivo - HTTPS](https://docs.aws.amazon.com/iot/latest/developerguide/http.html). A resposta é recebida com a mesma chamada de API da coreHTTP, `HTTPClient_Send`. 