Demonstração de autenticação mútua da coreHTTP - FreeRTOS

Demonstração de autenticação mútua da coreHTTP

Importante

Essa demonstração está hospedada no repositório Amazon-FreeRTOS, que está preterido. Recomendamos começar aqui 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.

Introdução

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.

Funcionalidade

Essa demonstração cria uma tarefa de aplicação única com exemplos que mostram como concluir o seguinte:

  • Conectar ao servidor HTTP no endpoint de AWS IoT.

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

Resultado de log mostrando a inicialização da 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.

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

Console de AWS IoT exibindo a mensagem "Olá do console de AWS IoT" publicada em um tópico em 20 de novembro de 2020 às 19:09:09 UTC.

Organização de código-fonte

O arquivo de demonstração do código-fonte é chamado http_demo_mutual_auth.c e pode ser encontrado no diretório freertos/demos/coreHTTP/ e no site do GitHub.

Conexão ao servidor HTTP da AWS IoT

A função connectToServerWithBackoffRetries tenta fazer uma conexão TLS mutuamente autenticada com o servidor HTTP do AWS IoT. 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 função PrvSendHttpRequest demonstra como enviar uma solicitação POST para o servidor HTTP do AWS IoT. Para obter mais informações sobre como fazer uma solicitação para a API REST na AWS IoT, consulte Protocolos de comunicação do dispositivo: HTTPS. A resposta é recebida com a mesma chamada de API da coreHTTP, HTTPClient_Send.