Guia de início rápido: Provisionar um dispositivo TPM simulado

Neste início rápido, você criará um dispositivo simulado em seu computador com Windows. O dispositivo simulado será configurado para usar um mecanismo de atestado de TPM (Trusted Platform Module) para autenticação. Depois de configurar o dispositivo, você o provisionará para o hub IoT usando o Serviço de Provisionamento de Dispositivos no Hub IoT do Azure. O código de exemplo será usado para ajudar a inscrever o dispositivo com uma instância do Serviço de Provisionamento de Dispositivos.

Se você não estiver familiarizado com o processo de provisionamento, examine a visão geral de provisionamento. Não se esqueça de concluir as etapas em Configurar o Serviço de Provisionamento de Dispositivos no Hub IoT com o Portal do Azure antes de continuar.

O Serviço de Provisionamento de Dispositivos de IoT do Azure dá suporte a dois tipos de registros:

Este artigo vai demonstrar o uso de registros individuais.

Não há suporte para atestado do TPM (Trusted Platform Module) no SDK do Python. Com o Python, você pode provisionar um dispositivo usando chaves simétricas ou certificados X.509.

Pré-requisitos

Os pré-requisitos a seguir são para um ambiente de desenvolvimento do Windows. Para Linux ou macOS, confira a seção apropriada em Preparar seu ambiente de desenvolvimento na documentação do SDK.

  • Um módulo de segurança de hardware do TPM 2.0 em seu computador baseado em Windows.

  • Instale o SDK do .NET Core 6.0 ou posterior no computador baseado no Windows. Use o comando a seguir para verificar a versão.

    dotnet --info
    
  • Instale a versão mais recente do Git. Verifique se o Git foi adicionado às variáveis de ambiente que podem ser acessadas pela janela de comando. Confira Ferramentas de cliente Git do Software Freedom Conservancy para obter a versão mais recente das ferramentas git a serem instaladas, que inclui o Git Bash, o aplicativo de linha de comando que você pode usar para interagir com seu repositório Git local.

Preparar seu ambiente de desenvolvimento

Nesta seção, você vai preparar um ambiente de desenvolvimento usado para criar o SDK do IoT do Azure para C e o exemplo de simulador de dispositivo TPM.

  1. Baixe o sistema de build CMake mais recente.

    Importante

    Confirme que os pré-requisitos do Visual Studio (Visual Studio e a carga de trabalho de 'Desenvolvimento para Desktop com C++') estão instalados no computador antes de iniciar a instalação de CMake. Após a instalação dos pré-requisitos e verificação do download, instale o sistema de compilação CMake. Além disso, esteja ciente de que as versões mais antigas do sistema de build CMake não geram o arquivo de solução usado neste artigo. Use a versão mais recente do CMake.

  2. Abra um navegador da Web e acesse a página de versão do SDK do Azure IoT para C.

  3. Selecione a guia Marcas na parte superior da página.

  4. Copie o nome da marca para a versão mais recente do SDK do Azure IoT para C.

  5. Abra um prompt de comando ou o shell Bash do Git. Execute os seguintes comandos para clonar a última versão do repositório do GitHub do SDK do dispositivo IoT do Azure para C. Substitua <release-tag> pela marca que você copiou na etapa anterior, por exemplo: lts_01_2023.

    git clone -b <release-tag> https://github.com/Azure/azure-iot-sdk-c.git
    cd azure-iot-sdk-c
    git submodule update --init
    

    Essa operação pode levar vários minutos para ser concluída.

  6. Quando a operação for concluída, execute os seguintes comandos no diretório azure-iot-sdk-c:

    mkdir cmake
    cd cmake
    
  1. Abra um ambiente de linha de comando Git CMD ou Git Bash.

  2. Clone o repositório do GitHub do SDK da IoT do Azure para C# usando o seguinte comando:

    git clone https://github.com/Azure/azure-iot-sdk-csharp.git
    
  1. Abra um ambiente de linha de comando Git CMD ou Git Bash.

  2. Clone o repositório GitHub azure-utpm-c usando o seguinte comando:

    git clone https://github.com/Azure/azure-utpm-c.git --recursive
    
  1. Abra um ambiente de linha de comando Git CMD ou Git Bash.

  2. Clone o repositório GitHub Java usando o seguinte comando:

    git clone https://github.com/Azure/azure-iot-sdk-java.git --recursive
    

Criar e executar o simulador de dispositivo TPM

Nesta seção, você criará e executará o simulador do TPM. Esse simulador escuta em um soquete nas portas 2321 e 2322. Não fechar a janela de comandos. Você precisará manter esse simulador em execução até o término deste guia de início rápido.

  1. Execute o comando a seguir para criar o SDK do Azure IoT para C que inclui o código de exemplo do simulador de dispositivo TPM. Uma solução do Visual Studio para o dispositivo simulado é gerada no diretório cmake. Este exemplo fornece um mecanismo de atestado de TPM por meio da autenticação de Token SAS (Assinatura de Acesso Compartilhado).

    cmake -Duse_prov_client:BOOL=ON -Duse_tpm_simulator:BOOL=ON ..
    

    Dica

    Se cmake não encontrar o compilador do C++, você poderá obter erros de build ao executar o comando acima. Se isso acontecer, tente executar o comando no prompt de comando do Visual Studio.

  2. Quando o build tiver êxito, as últimas linhas da saída terão aparência semelhante à seguinte saída:

    $ cmake -Duse_prov_client:BOOL=ON ..
    -- Building for: Visual Studio 16 2019
    -- The C compiler identification is MSVC 19.23.28107.0
    -- The CXX compiler identification is MSVC 19.23.28107.0
    
    ...
    
    -- Configuring done
    -- Generating done
    -- Build files have been written to: C:/code/azure-iot-sdk-c/cmake
    
  3. Acesse a pasta raiz do repositório git clonado.

  4. Execute o simulador do TPM usando o caminho mostrado abaixo.

    cd ..
    .\provisioning_client\deps\utpm\tools\tpm_simulator\Simulator.exe
    

    O simulador não exibe nenhuma saída. Mantenha-o em execução, pois ele simula um dispositivo TPM.

  1. Acesse a pasta raiz do GitHub.

  2. Execute o simulador de TPM para que ele seja o HSM para o dispositivo simulado.

    .\azure-utpm-c\tools\tpm_simulator\Simulator.exe
    
  3. Crie uma nova pasta vazia denominada registerdevice. Na pasta registerdevice, crie um arquivo package.json usando o seguinte comando no prompt de comando (lembre-se de responder a todas as perguntas feitas por npm ou aceite os padrões se eles forem adequados para você):

    npm init
    
  4. Instale os seguintes pacotes precursores:

    npm install node-gyp -g
    npm install ffi-napi -g
    

    Observação

    Há alguns problemas conhecidos ao instalar os pacotes acima. Para resolver esses problemas, execute npm install --global --production windows-build-tools usando um prompt de comando no modo Executar como administrador, execute SET VCTargetsPath=C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140 depois de substituir o caminho com sua versão instalada e execute novamente os comandos de instalação acima.

  5. Instale todos esses pacotes exigidos executando o seguinte comando no prompt de comando na pasta registerdevice:

    npm install --save azure-iot-device azure-iot-device-mqtt azure-iot-security-tpm azure-iot-provisioning-device-http azure-iot-provisioning-device
    

    O comando instala os seguintes pacotes:

    • Um cliente de segurança que funciona com TPM: azure-iot-security-tpm

    • Um transporte para o dispositivo para se conectar ao Serviço de provisionamento de dispositivos: azure-iot-provisioning-device-http ou azure-iot-provisioning-device-amqp

    • Um cliente para usar o cliente de transporte e segurança: azure-iot-provisioning-device

    • O cliente do dispositivo: azure-iot-device

    • Um transporte: qualquer um entre azure-iot-device-amqp, azure-iot-device-mqtt ou azure-iot-device-http

    • O cliente de segurança já instalado por você: azure-iot-security-tpm

      Observação

      Os exemplos neste guia de início rápido usam os transportes azure-iot-provisioning-device-http e azure-iot-device-mqtt.

  6. Abra um editor de texto de sua escolha.

  7. Na pasta registerdevice, crie um arquivo ExtractDevice.js.

  8. Adicione as seguintes instruções require no início do arquivo ExtractDevice.js:

    
    'use strict';
    
    var tpmSecurity = require('azure-iot-security-tpm');
    var tssJs = require("tss.js");
    
    var myTpm = new tpmSecurity.TpmSecurityClient(undefined, new tssJs.Tpm(true));
    
  9. Adicione a seguinte função para implementar o método:

    
    myTpm.getEndorsementKey(function(err, endorsementKey) {
      if (err) {
        console.log('The error returned from get key is: ' + err);
      } else {
        console.log('the endorsement key is: ' + endorsementKey.toString('base64'));
        myTpm.getRegistrationId((getRegistrationIdError, registrationId) => {
          if (getRegistrationIdError) {
            console.log('The error returned from get registration id is: ' + getRegistrationIdError);
          } else {
            console.log('The Registration Id is: ' + registrationId);
            process.exit();
          }
        });
      }
    });
    
  10. Salve e feche o arquivo ExtractDevice.js.

    node ExtractDevice.js
    
  11. Execute o exemplo.

  12. A janela de Saída exibe a Chave do endosso e a ID de registro necessárias para registrar o dispositivo. Copie esses valores.

  1. Execute o simulador de TPM para que ele seja o HSM para o dispositivo simulado.

  2. Selecione Permitir Acesso. O simulador escuta em um soquete nas portas 2321 e 2322. Não feche essa janela Comando; você precisa manter esse simulador em execução até o término deste guia de início rápido.

    .\azure-iot-sdk-java\provisioning\provisioning-tools\tpm-simulator\Simulator.exe
    

    TPM Simulator

  3. Abra um segundo prompt de comando.

  4. Em um segundo prompt de comando, navegue até a pasta raiz crie as dependências de exemplo.

    cd azure-iot-sdk-java
    mvn install -DskipTests=true
    
  5. Navegue até a pasta de exemplo.

    cd provisioning/provisioning-samples/provisioning-tpm-sample
    

Ler as chaves de criptografia do dispositivo TPM

Nesta seção, você criará e executará um exemplo que lerá a ID do registro e a chave de endosso do simulador do TPM que você deixou em execução e ainda está escutando nas portas 2321 e 2322. Esses valores serão usados para a inscrição do dispositivo com sua instância do Serviço de Provisionamento de Dispositivos.

  1. Inicie o Visual Studio.

  2. Abra a solução gerada na pasta cmake denominada azure_iot_sdks.sln.

  3. No menu do Visual Studio, selecione Compilar>Compilar Solução para compilar todos os projetos na solução.

  4. Na janela Gerenciador de Soluções do Visual Studio, navegue até a pasta Provisionar_Ferramentas. Clique com botão direito do mouse no projeto tpm_device_provision e selecione Definir como Projeto de Inicialização.

  5. No menu do Visual Studio, selecione Depurar>Iniciar sem depuração para executar a solução. O aplicativo lê e exibe uma ID de Registro e uma Chave de endosso. Anote ou copie esses valores. Eles serão usados na próxima seção para registro do dispositivo.

  1. Entre no portal do Azure, selecione o botão Todos os recursos no menu esquerdo e abra o Serviço de Provisionamento de Dispositivos. Tome nota de seu Escopo da ID e Ponto de Extremidade Global do Serviço de Provisionamento.

    Device Provisioning Service information

  2. Edite src/main/java/samples/com/microsoft/azure/sdk/iot/ProvisioningTpmSample.java para incluir o Escopo da ID e o Ponto de Extremidade Global do Serviço de Provisionamento conforme anotado antes.

    private static final String idScope = "[Your ID scope here]";
    private static final String globalEndpoint = "[Your Provisioning Service Global Endpoint here]";
    private static final ProvisioningDeviceClientTransportProtocol PROVISIONING_DEVICE_CLIENT_TRANSPORT_PROTOCOL = ProvisioningDeviceClientTransportProtocol.HTTPS;
    
  3. Salve o arquivo.

  4. Use os seguintes comandos para criar o projeto, navegue até a pasta de destino e execute o arquivo .jar criado (substitua {version} por sua versão do Java):

    mvn clean install
    cd target
    java -jar ./provisioning-tpm-sample-{version}-with-deps.jar
    
  5. Quando o programa começar a ser executado, ele exibirá a Chave de endosso e a ID de registro. Copie esses valores para usá-los na próxima seção. Lembre-se de deixar o programa em execução.

Nesta seção, você criará e executará um exemplo que lê a chave de endosso de seu módulo de segurança de hardware do TPM 2.0. Esse valore será usado para a inscrição do dispositivo com sua instância do Serviço de Provisionamento de Dispositivos.

  1. Em um prompt de comando, altere os diretórios para o diretório do projeto de exemplo de provisionamento do dispositivo TPM.

    cd '.\azure-iot-sdk-csharp\provisioning\device\samples\how to guides\TpmSample\'
    
  2. Digite o seguinte comando para compilar e executar o exemplo de provisionamento de dispositivo TPM. Copie a chave de endosso retornada do módulo de segurança de hardware do TPM 2.0 para usar mais tarde no registro do dispositivo.

    dotnet run -- -e
    

Criar uma entrada de registro de dispositivo

  1. Entre no portal do Azure e navegue até instância do Serviço de Provisionamento de Dispositivos.

  2. Selecione Gerenciar registros na seção Configurações do menu de navegação.

  3. Selecione a guia Registros individuais e, em seguida, selecione Adicionar registro individual.

    Screenshot that shows the add individual enrollment option.

  4. Na guia Registro + provisionamento da página Adicionar registro, forneça as seguintes informações para configurar os detalhes do registro:

    Campo Descrição
    Atestado Selecione TPM (Trusted Platform Module) como o Mecanismo de atestado.
    Configurações do Trusted Platform Module (TPM) Forneça a chave de endosso que será usada para verificar o dispositivo para esse registro. Você pode recuperar a chave de endosso do TPM do seu dispositivo.
    ID de registro Forneça uma ID de registro exclusiva para o dispositivo. Você pode recuperar a ID de registro do TPM do seu dispositivo.
    Status do provisionamento Marque a caixa Habilitar este registro se quiser que esse registro esteja disponível para provisionar seu dispositivo. Desmarque essa caixa se quiser que o registro seja desabilitado. Você poderá alterar essa configuração mais tarde.
    Reprovisionar política Escolha uma política de reprovisionamento que reflita como você deseja que o DPS manipule os dispositivos que solicitam o reprovisionamento. Para obter mais informações, confira Reprovisionar políticas.
  5. Selecione Próximo: hubs IoT.

  6. Na guia Hubs IoT da página Adicionar registro, forneça as seguintes informações para determinar para quais hubs IoT o registro pode provisionar dispositivos:

    Campo Descrição
    Hubs IoT de destino Selecione um ou mais dos hubs IoT vinculados ou adicione um novo link a um hub IoT. Para saber mais sobre como vincular hubs IoT à instância do DPS, confira Como vincular e gerenciar hubs IoT.
    Política de alocação Se você selecionou mais de um hub IoT vinculado, selecione como deseja atribuir dispositivos aos diferentes hubs. Para saber mais sobre políticas de alocação, confira Como usar políticas de alocação.

    Se você selecionou apenas um hub IoT vinculado, recomendamos usar a política de Distribuição uniformemente ponderada.
  7. Selecione Avançar: Configurações do dispositivo

  8. Na guia Configurações do dispositivo da página Adicionar registro, forneça as seguintes informações para definir como os dispositivos provisionados recentemente serão configurados:

    Campo Descrição
    ID do Dispositivo Forneça uma ID do dispositivo que será atribuída ao dispositivo provisionado no Hub IoT. Se você não fornecer uma ID de dispositivo, a ID de registro será usada.
    IoT Edge Verifique Habilitar IoT Edge em dispositivos provisionados se o dispositivo provisionado executará o Azure IoT Edge. Desmarque essa caixa se esse registro for para um dispositivo não habilitado para IoT Edge.
    Marcas de dispositivo Use esta caixa de texto para fornecer as marcas que você deseja aplicar ao dispositivo gêmeo do dispositivo provisionado.
    Propriedades desejadas Use esta caixa de texto para fornecer as propriedades desejadas que você quer aplicar ao dispositivo gêmeo do dispositivo provisionado.

    Para saber mais, veja Noções básicas e uso de dispositivos gêmeos no Hub IoT.

  9. Selecione Avançar: Revisar + criar.

  10. Na guia Revisar + criar, verifique todos os seus valores e selecione Criar.

O exemplo de TPM do C# para este início rápido não fornece uma ID de registro. Quando solicitado a adicionar um para o registro individual, forneça seu próprio valor.

  1. Entre no portal do Azure e navegue até instância do Serviço de Provisionamento de Dispositivos.

  2. Selecione Gerenciar registros na seção Configurações do menu de navegação.

  3. Selecione a guia Registros individuais e, em seguida, selecione Adicionar registro individual.

    Screenshot that shows the add individual enrollment option.

  4. Na guia Registro + provisionamento da página Adicionar registro, forneça as seguintes informações para configurar os detalhes do registro:

    Campo Descrição
    Atestado Selecione TPM (Trusted Platform Module) como o Mecanismo de atestado.
    Configurações do Trusted Platform Module (TPM) Forneça a chave de endosso que será usada para verificar o dispositivo para esse registro. Você pode recuperar a chave de endosso do TPM do seu dispositivo.
    ID de registro Forneça uma ID de registro exclusiva para o dispositivo. Você pode recuperar a ID de registro do TPM do seu dispositivo.
    Status do provisionamento Marque a caixa Habilitar este registro se quiser que esse registro esteja disponível para provisionar seu dispositivo. Desmarque essa caixa se quiser que o registro seja desabilitado. Você poderá alterar essa configuração mais tarde.
    Reprovisionar política Escolha uma política de reprovisionamento que reflita como você deseja que o DPS manipule os dispositivos que solicitam o reprovisionamento. Para obter mais informações, confira Reprovisionar políticas.
  5. Selecione Próximo: hubs IoT.

  6. Na guia Hubs IoT da página Adicionar registro, forneça as seguintes informações para determinar para quais hubs IoT o registro pode provisionar dispositivos:

    Campo Descrição
    Hubs IoT de destino Selecione um ou mais dos hubs IoT vinculados ou adicione um novo link a um hub IoT. Para saber mais sobre como vincular hubs IoT à instância do DPS, confira Como vincular e gerenciar hubs IoT.
    Política de alocação Se você selecionou mais de um hub IoT vinculado, selecione como deseja atribuir dispositivos aos diferentes hubs. Para saber mais sobre políticas de alocação, confira Como usar políticas de alocação.

    Se você selecionou apenas um hub IoT vinculado, recomendamos usar a política de Distribuição uniformemente ponderada.
  7. Selecione Avançar: Configurações do dispositivo

  8. Na guia Configurações do dispositivo da página Adicionar registro, forneça as seguintes informações para definir como os dispositivos provisionados recentemente serão configurados:

    Campo Descrição
    ID do Dispositivo Forneça uma ID do dispositivo que será atribuída ao dispositivo provisionado no Hub IoT. Se você não fornecer uma ID de dispositivo, a ID de registro será usada.
    IoT Edge Verifique Habilitar IoT Edge em dispositivos provisionados se o dispositivo provisionado executará o Azure IoT Edge. Desmarque essa caixa se esse registro for para um dispositivo não habilitado para IoT Edge.
    Marcas de dispositivo Use esta caixa de texto para fornecer as marcas que você deseja aplicar ao dispositivo gêmeo do dispositivo provisionado.
    Propriedades desejadas Use esta caixa de texto para fornecer as propriedades desejadas que você quer aplicar ao dispositivo gêmeo do dispositivo provisionado.

    Para saber mais, veja Noções básicas e uso de dispositivos gêmeos no Hub IoT.

  9. Selecione Avançar: Revisar + criar.

  10. Na guia Revisar + criar, verifique todos os seus valores e selecione Criar.

Registrar o dispositivo

Nesta seção, você vai configurar o código de exemplo para usar o AMQP (Advanced Message Queuing Protocol) para enviar a sequência de inicialização do dispositivo para a instância do Serviço de Provisionamento de Dispositivos. Essa sequência de inicialização fará com que o dispositivo seja registrado em um hub IoT vinculado à instância do Serviço de Provisionamento de Dispositivos.

  1. No portal do Azure, selecione a guia Visão Geral do seu serviço de Provisionamento de Dispositivos.

  2. Copie o valor de Escopo da ID.

    Extract Device Provisioning Service endpoint information from the portal

  3. Na janela Gerenciador de Soluções do Visual Studio, navegue até a pasta Provisionar_Exemplos. Expanda o projeto de exemplo chamado prov_dev_client_sample. Expanda Arquivos de Origem e abra prov_dev_client_sample.c.

  4. Próximo à parte superior do arquivo, localize as instruções #define para cada protocolo de dispositivo, conforme mostrado abaixo. Remova a marca de comentário apenas de SAMPLE_AMQP.

    Atualmente, o protocolo MQTT não tem suporte para o Registro Individual de TPM.

    //
    // The protocol you wish to use should be uncommented
    //
    //#define SAMPLE_MQTT
    //#define SAMPLE_MQTT_OVER_WEBSOCKETS
    #define SAMPLE_AMQP
    //#define SAMPLE_AMQP_OVER_WEBSOCKETS
    //#define SAMPLE_HTTP
    
  5. Localize a constante id_scope e substitua o valor pelo seu valor de Escopo de ID copiado anteriormente.

    static const char* id_scope = "0ne00002193";
    
  6. Encontre a definição da função main() no mesmo arquivo. Verifique se a variável hsm_type está definida como SECURE_DEVICE_TYPE_TPM, conforme mostrado abaixo.

    SECURE_DEVICE_TYPE hsm_type;
    hsm_type = SECURE_DEVICE_TYPE_TPM;
    //hsm_type = SECURE_DEVICE_TYPE_X509;
    //hsm_type = SECURE_DEVICE_TYPE_SYMMETRIC_KEY;
    
  7. Clique com botão direito do mouse no projeto prov_dev_client_sample e selecione Definir como Projeto de Inicialização.

  8. No menu do Visual Studio, selecione Depurar>Iniciar sem depuração para executar a solução. No prompt para recompilar o projeto, selecione Sim para recompilar o projeto antes da execução.

    A saída a seguir é um exemplo da inicialização bem-sucedida do exemplo de cliente de dispositivo provisionamento, e da conexão com uma instância de Serviço de Provisionamento de Dispositivos para obter informações e registrar o hub IoT:

    Provisioning API Version: 1.2.7
    
    Registering... Press enter key to interrupt.
    
    Provisioning Status: PROV_DEVICE_REG_STATUS_CONNECTED
    Provisioning Status: PROV_DEVICE_REG_STATUS_ASSIGNING
    Provisioning Status: PROV_DEVICE_REG_STATUS_ASSIGNING
    
    Registration Information received from service:
    test-docs-hub.azure-devices.net, deviceId: test-docs-cert-device
    
  1. No portal do Azure, selecione a guia Visão Geral do seu serviço de Provisionamento de Dispositivos.

  2. Copie o valor de Escopo da ID.

    Copy provisioning service Scope ID from the portal blade

  3. Em um prompt de comando, altere os diretórios para o diretório do projeto de exemplo de provisionamento do dispositivo TPM.

     cd '.\azure-iot-sdk-csharp\provisioning\device\samples\how to guides\TpmSample\'
    
  4. Execute o comando a seguir para registrar seu dispositivo. Substitua <IdScope> pelo valor do DPS que você copiou e <RegistrationId> pelo valor que você usou ao criar o registro do dispositivo.

    dotnet run -- -s <IdScope> -r <RegistrationId>
    

    Se o registro do dispositivo tiver sido bem-sucedido, você verá as seguintes mensagens:

    Initializing security using the local TPM...
    Initializing the device provisioning client...
    Initialized for registration Id <RegistrationId>.
    Registering with the device provisioning service...
    Registration status: Assigned.
    Device <RegistrationId> registered to <HubName>.azure-devices.net.
    Creating TPM authentication for IoT Hub...
    Testing the provisioned device with IoT Hub...
    Sending a telemetry message...
    Finished.
    
  1. No portal do Azure, selecione a guia Visão Geral do seu serviço de Provisionamento de Dispositivos.

  2. Copie o valor de Escopo da ID.

    Extract Device Provisioning Service endpoint information from the portal blade

  3. Abra um editor de texto de sua escolha.

  4. Na pasta registerdevice, crie um arquivo RegisterDevice.js.

  5. Adicione as seguintes instruções require no início do arquivo RegisterDevice.js:

    
    'use strict';
    
    var ProvisioningTransport = require('azure-iot-provisioning-device-http').Http;
    var iotHubTransport = require('azure-iot-device-mqtt').Mqtt;
    var Client = require('azure-iot-device').Client;
    var Message = require('azure-iot-device').Message;
    var tpmSecurity = require('azure-iot-security-tpm');
    var ProvisioningDeviceClient = require('azure-iot-provisioning-device').ProvisioningDeviceClient;
    

    Observação

    O SDK do IoT do Azure para Node.js oferece suporte a protocolos adicionais como AMQP, AMQP WS e MQTT WS. Para obter mais exemplos, consulte SDK do serviço de provisionamento de dispositivos para obter exemplos de Node.js.

  6. Adicione as variáveis globalDeviceEndpoint e idScope e use-as para criar uma instância ProvisioningDeviceClient. Substitua {globalDeviceEndpoint} e {idScope} pelos valores Ponto de Extremidade do Dispositivo Global e Escopo da ID da Etapa 1:

    
    var provisioningHost = '{globalDeviceEndpoint}';
    var idScope = '{idScope}';
    
    var tssJs = require("tss.js");
    var securityClient = new tpmSecurity.TpmSecurityClient('', new tssJs.Tpm(true));
    // if using non-simulated device, replace the above line with following:
    //var securityClient = new tpmSecurity.TpmSecurityClient();
    
    var provisioningClient = ProvisioningDeviceClient.create(provisioningHost, idScope, new ProvisioningTransport(), securityClient);
    
  7. Adicione a seguinte função para implementar o método no dispositivo:

    
    provisioningClient.register(function(err, result) {
      if (err) {
        console.log("error registering device: " + err);
      } else {
        console.log('registration succeeded');
        console.log('assigned hub=' + result.registrationState.assignedHub);
        console.log('deviceId=' + result.registrationState.deviceId);
        var tpmAuthenticationProvider = tpmSecurity.TpmAuthenticationProvider.fromTpmSecurityClient(result.registrationState.deviceId, result.registrationState.assignedHub, securityClient);
        var hubClient = Client.fromAuthenticationProvider(tpmAuthenticationProvider, iotHubTransport);
    
        var connectCallback = function (err) {
          if (err) {
            console.error('Could not connect: ' + err.message);
          } else {
            console.log('Client connected');
            var message = new Message('Hello world');
            hubClient.sendEvent(message, printResultFor('send'));
          }
        };
    
        hubClient.open(connectCallback);
    
        function printResultFor(op) {
          return function printResult(err, res) {
            if (err) console.log(op + ' error: ' + err.toString());
            if (res) console.log(op + ' status: ' + res.constructor.name);
            process.exit(1);
          };
        }
      }
    });
    
  8. Salve e feche o arquivo RegisterDevice.js.

  9. Execute o comando a seguir:

    node RegisterDevice.js
    
  10. Observe as mensagens que simulam a inicialização e a conexão do dispositivo com o Serviço de Provisionamento de Dispositivos para obter as informações do Hub IoT.

  1. Na janela de comandos que executa o código de exemplo do Java no seu computador, pressione Enter para continuar a execução do aplicativo. Observe as mensagens que simulam a inicialização e a conexão do dispositivo com o Serviço de Provisionamento de Dispositivos para obter as informações do Hub IoT.

    Java TPM device program final

Confirmar o registro de provisionamento de dispositivos

  1. Entre no portal do Azure.

  2. No menu à esquerda ou na página do portal, selecione Todos os recursos.

  3. Selecione o hub IoT ao qual o dispositivo foi atribuído.

  4. No menu Gerenciadores, selecione Dispositivos IoT.

  1. Se o dispositivo tiver sido provisionado com êxito, a ID do dispositivo deverá aparecer na lista, com o Status definido como Habilitado. Se você não vir seu dispositivo, selecione Atualizar na parte superior da página.

    Device is registered with the IoT hub for C

  1. Se o dispositivo tiver sido provisionado com êxito, a ID do dispositivo deverá aparecer na lista, com o Status definido como Habilitado. Se você não vir seu dispositivo, selecione Atualizar na parte superior da página.

    Device is registered with the IoT hub for C#

  1. Se o dispositivo tiver sido provisionado com êxito, a ID do dispositivo deverá aparecer na lista, com o Status definido como Habilitado. Se você não vir seu dispositivo, selecione Atualizar na parte superior da página.

    Device is registered with the IoT hub for Node.js

  1. Se o dispositivo tiver sido provisionado com êxito, a ID do dispositivo deverá aparecer na lista, com o Status definido como Habilitado. Se você não vir seu dispositivo, selecione Atualizar na parte superior da página.

    Device is registered with the IoT hub

Observação

Se você tiver alterado o estado de dispositivo gêmeo inicial do valor padrão na entrada de registro para o seu dispositivo, pode receber o estado desejado duas do hub e agir de acordo. Para saber mais, veja Noções básicas e uso de dispositivos gêmeos no Hub IoT.

Limpar os recursos

Se planejar continuar trabalhando e explorando o dispositivo cliente de exemplo, não limpe os recursos criados neste início rápido. Se não quiser continuar, use as etapas a seguir para excluir todos os recursos criados por este guia de início rápido.

Excluir o registro do dispositivo

  1. Feche a janela de saída de exemplo de dispositivo cliente em seu computador.

  2. No menu à esquerda no portal do Azure, selecione Todos os recursos.

  3. Selecione o seu Serviço de Provisionamento de Dispositivos.

  4. No menu Configurações, selecione Gerenciar registros.

  5. Selecione a guia Registros individuais.

  6. Marque a caixa de seleção ao lado da ID de registro do dispositivo em que você se inscreveu neste guia de início rápido.

  7. Na parte superior da página, selecione Excluir.

Excluir o registro do dispositivo do Hub IoT

  1. No menu à esquerda no portal do Azure, selecione Todos os recursos.

  2. Selecione seu Hub IoT.

  3. No menu Gerenciadores, selecione Dispositivos IoT.

  4. Marque a caixa de seleção ao lado da ID do dispositivo do dispositivo inscrito neste guia de início rápido.

  5. Na parte superior da página, selecione Excluir.

Próximas etapas

Neste início rápido, você provisionou um único dispositivo para o hub IoT usando um registro individual. Em seguida, saiba como provisionar vários dispositivos em vários hubs.