Share via


Zelfstudie: Apparaten inrichten met behulp van symmetrische sleutelinschrijvingsgroepen

Deze zelfstudie laat zien hoe u veilig meerdere gesimuleerde symmetrische sleutelapparaten kunt inrichten voor één IoT Hub met behulp van een inschrijvingsgroep.

De Azure IoT Hub Device Provisioning Service ondersteunt twee typen inschrijvingen voor inrichtingsapparaten:

  • Registratiegroepen: wordt gebruikt om meerdere gerelateerde apparaten in te schrijven. In deze zelfstudie wordt het inrichten met inschrijvingsgroepen gedemonstreert.
  • Afzonderlijke inschrijvingen: wordt gebruikt om één apparaat in te schrijven.

De Azure IoT Hub Device Provisioning Service ondersteunt drie vormen van verificatie voor het inrichten van apparaten:

  • X.509-certificaten
  • Tpm (Trusted Platform Module)
  • Symmetrische sleutels : in deze zelfstudie wordt de attestation van symmetrische sleutels gedemonstreert

Sommige apparaten hebben mogelijk geen certificaat, TPM of een andere beveiligingsfunctie die kan worden gebruikt om het apparaat veilig te identificeren. Voor dergelijke apparaten bevat de Azure IoT Hub Device Provisioning Service (DPS) symmetrische sleutelverklaring. Attestation van symmetrische sleutels kan worden gebruikt om een apparaat te identificeren op basis van unieke informatie, zoals het MAC-adres of een serienummer.

In deze zelfstudie voltooit u de volgende doelstellingen:

  • Definieer een unieke registratie-id voor elk apparaat.
  • Maak een inschrijvingsgroep die gebruikmaakt van attestation met symmetrische sleutels.
  • Produceer een apparaatsleutel voor elk apparaat met behulp van de unieke registratie-id en de gedeelde inschrijvingsgroepssleutel.
  • Apparaten inrichten met behulp van de apparaatsleutel en voorbeeldcode in de Azure IoT-apparaat-SDK's.

Deze zelfstudie is gericht op een Windows-werkstation. U kunt de procedures echter ook uitvoeren op Linux. Zie Zelfstudie: Inrichten voor geolatentie voor een Linux-voorbeeld.

Notitie

Als u eerder de quickstart hebt voltooid : Een gesimuleerd symmetrisch sleutelapparaat inrichten en nog steeds uw Azure-resources en ontwikkelomgeving hebben ingesteld, kunt u doorgaan met het maken van een symmetrische sleutelinschrijvingsgroep in deze zelfstudie.

Vereisten

  • Als u een Windows-ontwikkelomgeving gebruikt, installeert u Visual Studio 2022 met de workload Desktopontwikkeling met C++ . Visual Studio 2019, Visual Studio 2017 en Visual Studio 2015 worden ook ondersteund. Voor Linux of macOS raadpleegt u het desbetreffende gedeelte in Uw ontwikkelomgeving voorbereiden in de SDK-documentatie.

  • Installeer het nieuwste CMake-buildsysteem. Controleer de optie waarmee het uitvoerbare CMake-bestand aan uw pad wordt toegevoegd.

    Belangrijk

    Controleer of de vereisten voor Visual Studio (Visual Studio en de workload Desktopontwikkeling met C++) op uw computer zijn geïnstalleerd voordat u de CMake installatie start. Zodra aan de vereisten is voldaan en de download is geverifieerd, installeert u het CMake-bouwsysteem. Houd er ook rekening mee dat oudere versies van het CMake-buildsysteem het oplossingsbestand dat in dit artikel wordt gebruikt, niet kunnen genereren. Zorg ervoor dat u de nieuwste versie van CMake gebruikt.

  • Installeer .NET SDK 6.0 of hoger op uw Windows-computer. U kunt de volgende opdracht gebruiken om uw versie te controleren.

    dotnet --info
    
  • Installeer Python 3.7 of hoger die op uw Windows-computer is geïnstalleerd. U kunt uw versie van Python controleren door python --version uit te voeren.
  • Installeer de meest recente versie van Git. Zorg ervoor dat Git is toegevoegd aan de omgevingsvariabelen die toegankelijk zijn voor het opdrachtvenster. Zie de Git-clienthulpprogramma's van Software Freedom Conservancy voor de nieuwste versie van git hulpprogramma's die u kunt installeren, waaronder Git Bash, de opdrachtregel-app die u kunt gebruiken om te communiceren met uw lokale Git-opslagplaats.

Uw ontwikkelomgeving voorbereiden

In deze sectie bereidt u een ontwikkelomgeving voor om de Azure IoT Device SDK voor C te bouwen. De voorbeeldcode richt het apparaat in tijdens de opstartvolgorde van het apparaat.

  1. Ga in een webbrowser naar de releasepagina van de Azure IoT C SDK.

  2. Kopieer de tagnaam voor de nieuwste versie van de Azure IoT C SDK, bijvoorbeeld: lts_03_2024.

  3. Open een Windows-opdrachtprompt en voer de volgende opdrachten uit om de nieuwste versie van de Azure IoT Device SDK voor C GitHub-opslagplaats te klonen. Vervang <release-tag> door de tag die u in de vorige stap hebt gekopieerd.

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

    Het kan enkele minuten duren voordat deze bewerking is voltooid.

  4. Wanneer de bewerking is voltooid, voert u de volgende opdrachten uit vanuit de azure-iot-sdk-c map:

    mkdir cmake
    cd cmake
    
  5. In het codevoorbeeld wordt een symmetrische sleutel gebruikt om attestation te bieden. Voer de volgende opdracht uit om een versie van de SDK te bouwen die specifiek is voor uw ontwikkelclientplatform met de client voor apparaatinrichting:

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

    Tip

    Als cmake uw C++-compiler niet wordt gevonden, kunnen er buildfouten optreden tijdens het uitvoeren van de bovenstaande opdracht. Als dit gebeurt, voert u de opdracht uit in de Visual Studio-opdrachtprompt.

  6. Wanneer de build is voltooid, zien de laatste uitvoerregels er ongeveer als volgt uit:

    $ cmake -Dhsm_type_symm_key:BOOL=ON -Duse_prov_client:BOOL=ON  ..
    -- Building for: Visual Studio 16 2019
    -- Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.22621.
    -- The C compiler identification is MSVC 19.29.30146.0
    -- The CXX compiler identification is MSVC 19.29.30146.0
    
    ...
    
    -- Configuring done
    -- Generating done
    -- Build files have been written to: C:/azure-iot-sdk-c/cmake
    
  1. Open een opdrachtprompt of Git Bash-terminal.

  2. Kloon de Azure IoT SDK voor C# GitHub-opslagplaats met behulp van de volgende opdracht:

    git clone https://github.com/Azure/azure-iot-sdk-csharp.git
    
  1. Open een opdrachtprompt of Git Bash-terminal.

  2. Kloon de GitHub-opslagplaats Azure IoT SDK voor Node.js met behulp van de volgende opdracht:

    git clone https://github.com/Azure/azure-iot-sdk-node.git --recursive
    
  1. Open een opdrachtprompt of Git Bash-terminal.

  2. Kloon de Azure IoT Device SDK voor Python GitHub-opslagplaats met behulp van de volgende opdracht:

    git clone -b v2 https://github.com/Azure/azure-iot-sdk-python.git --recursive
    

    Notitie

    De voorbeelden die in deze zelfstudie worden gebruikt, bevinden zich in de v2-vertakking van de opslagplaats azure-iot-sdk-python. V3 van de Python SDK is beschikbaar voor gebruik in bètaversie. Zie de Migratiehandleiding voor Azure IoT Device SDK voor Python voor informatie over het bijwerken van V2-codevoorbeelden voor het gebruik van een V3-versie van de Python SDK.

  1. Open een opdrachtprompt of Git Bash-terminal.

  2. Kloon de Azure IoT SDK voor Java GitHub-opslagplaats met behulp van de volgende opdracht:

    git clone https://github.com/Azure/azure-iot-sdk-java.git --recursive
    
  3. Ga naar de hoofdmap azure-iot-sdk-java en bouw het project om alle benodigde pakketten te downloaden. Het kan enkele minuten duren voordat deze stap is voltooid.

    cd azure-iot-sdk-java
    mvn install -DskipTests=true
    

Een registratiegroep met symmetrische sleutels maken

  1. Meld u aan bij Azure Portal en navigeer naar uw Device Provisioning Service-exemplaar.

  2. Selecteer Inschrijvingen beheren in de sectie Instellingen van het navigatiemenu.

  3. Selecteer Inschrijvingsgroep toevoegen.

  4. Geef op het tabblad Registratie en inrichting van de pagina Inschrijvingsgroep toevoegen de volgende informatie op om de details van de inschrijvingsgroep te configureren:

    Veld Beschrijving
    Attest Selecteer symmetrische sleutel als attestation-mechanisme.
    Instellingen voor symmetrische sleutels Schakel het selectievakje Symmetrische sleutels genereren automatisch in als u willekeurig gegenereerde sleutels wilt gebruiken. Schakel dit selectievakje uit als u uw eigen sleutels wilt opgeven.
    Groepsnaam Geef een naam op voor de groep apparaten. De naam van de inschrijvingsgroep is een niet-hoofdlettergevoelige tekenreeks (maximaal 128 tekens lang) met alfanumerieke tekens plus de speciale tekens: '-', '.', '_', . ':' Het laatste teken moet alfanumeriek of streepje ('-') zijn.
    Inrichtingsstatus Schakel het selectievakje Deze inschrijving inschakelen in als u wilt dat deze inschrijvingsgroep beschikbaar is voor het inrichten van apparaten. Schakel dit selectievakje uit als u wilt dat de groep wordt uitgeschakeld. U kunt deze instelling later wijzigen.
    Beleid voor opnieuw inrichten Kies een beleid voor opnieuw inrichten dat aangeeft hoe DPS apparaten verwerkt die herinrichting aanvragen. Zie Beleid voor opnieuw inrichten voor meer informatie

    Screenshot that shows adding an enrollment group for symmetric key attestation.

  5. Selecteer Volgende: IoT-hubs.

  6. Geef op het tabblad IoT Hubs van de pagina Inschrijvingsgroep toevoegen de volgende informatie op om te bepalen aan welke IoT-hubs de inschrijvingsgroep apparaten kan inrichten:

    Veld Beschrijving
    IoT-doelhubs Selecteer een of meer gekoppelde IoT-hubs of voeg een nieuwe koppeling toe aan een IoT-hub. Zie IoT-hubs koppelen en beheren voor meer informatie over het koppelen van IoT-hubs aan uw DPS-exemplaar.
    Toewijzingsbeleid Als u meer dan één gekoppelde IoT-hub hebt geselecteerd, selecteert u hoe u apparaten wilt toewijzen aan de verschillende hubs. Zie Toewijzingsbeleid gebruiken voor meer informatie over toewijzingsbeleid.

    Als u slechts één gekoppelde IoT-hub hebt geselecteerd, raden we u aan het gelijkmatig gewogen distributiebeleid te gebruiken.

    Screenshot that shows connecting IoT hubs to the new enrollment group.

  7. Volgende selecteren: Apparaatinstellingen

  8. Geef op het tabblad Apparaatinstellingen van de pagina Inschrijvingsgroep toevoegen de volgende informatie op om te definiëren hoe nieuw ingerichte apparaten worden geconfigureerd:

    Veld Beschrijving
    IoT Edge Schakel IoT Edge in op ingerichte apparaten als alle apparaten die via deze groep zijn ingericht, Azure IoT Edge uitvoeren. Schakel dit selectievakje uit als deze groep alleen voor niet-IoT Edge-apparaten is ingeschakeld. Alle apparaten in een groep zijn ingeschakeld voor IoT Edge of geen.
    Apparaattags Gebruik dit tekstvak om alle tags op te geven die u wilt toepassen op de apparaatdubbels van ingerichte apparaten.
    Gewenste eigenschappen Gebruik dit tekstvak om de gewenste eigenschappen op te geven die u wilt toepassen op de apparaatdubbels van ingerichte apparaten.

    Zie Apparaatdubbels begrijpen en gebruiken in IoT Hub voor meer informatie.

  9. Selecteer Volgende: Beoordelen en maken.

  10. Controleer op het tabblad Controleren en maken al uw waarden en selecteer Vervolgens Maken.

Wanneer u de inschrijvingsgroep maakt, genereert DPS een primaire sleutel en secundaire sleutel en voegt deze vervolgens toe aan de inschrijvingsvermelding. Uw symmetrische sleutelregistratiegroep wordt weergegeven onder de kolom Groepsnaam op het tabblad Inschrijvingsgroepen .

Open de inschrijving en kopieer de waarde van de primaire sleutel. Deze sleutel is uw groepssleutel.

Kies een unieke registratie-id voor het apparaat

Er moet een unieke registratie-id worden gedefinieerd om elk apparaat te identificeren. U kunt het MAC-adres, serienummer of een unieke informatie van het apparaat gebruiken.

In dit voorbeeld gebruiken we een combinatie van een MAC-adres en serienummer die de volgende tekenreeks vormen voor een registratie-id.

sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6

Maak unieke registratie-id's voor elk apparaat. De registratie-id is een hoofdlettergevoelige tekenreeks (maximaal 128 tekens lang) met alfanumerieke tekens plus de volgende speciale tekens: - . _ :. Het laatste teken moet alfanumeriek of streepje (-) zijn.

Een apparaatsleutel afleiden

Als u apparaatsleutels wilt genereren, gebruikt u de primaire sleutel van de inschrijvingsgroep om een HMAC-SHA256-hash van de registratie-id voor elk apparaat te berekenen. Het resultaat wordt vervolgens geconverteerd naar base 64-indeling voor elk apparaat.

Waarschuwing

De apparaatcode voor elk apparaat mag alleen de afgeleide apparaatsleutel voor dat apparaat bevatten. Neem de primaire groepssleutel niet op in de apparaatcode. Een gecompromitteerde groepssleutel kan de beveiliging van alle apparaten die ermee worden geverifieerd, in gevaar komen.

De IoT-extensie voor de Azure CLI biedt de opdracht az iot dps enrollment-group compute-device-key voor het genereren van afgeleide apparaatsleutels. Deze opdracht kan worden gebruikt vanuit zowel Windows- als Linux-systemen.

Vervang de waarde van de --key parameter door de primaire sleutel uit uw inschrijvingsgroep.

Vervang de waarde van de --registration-id parameter door uw registratie-id.

az iot dps enrollment-group compute-device-key --key <group_primary_key> --registration-id <device_registration_id>

Voorbeeldresultaat:

"Jsm0lyGpjaVYVP2g3FnmnmG9dI/9qU24wNoykUmermc="

Elk apparaat gebruikt de afgeleide apparaatsleutel en de unieke registratie-id om symmetrische sleutelattestatie uit te voeren bij de inschrijvingsgroep tijdens het inrichten.

De apparaatinrichtingscode voorbereiden en uitvoeren

In deze sectie werkt u de voorbeeldcode van het apparaat bij om de opstartvolgorde van het apparaat naar uw Device Provisioning Service-exemplaar te verzenden. Deze opstartvolgorde zorgt ervoor dat het apparaat wordt herkend, geverifieerd en toegewezen aan een IoT-hub die is gekoppeld aan het Device Provisioning Service-exemplaar.

De voorbeeldinrichtingscode voert de volgende taken uit, in volgorde:

  1. Verifieert uw apparaat met uw Device Provisioning-resource met behulp van de volgende drie parameters:

    • Het id-bereik van uw Device Provisioning Service
    • De registratie-id voor uw apparaat.
    • De afgeleide apparaatsleutel voor uw apparaat.
  2. Hiermee wordt het apparaat toegewezen aan de IoT-hub die al is gekoppeld aan uw Device Provisioning Service-exemplaar.

Het inrichtingsvoorbeeld bijwerken en uitvoeren met de apparaatgegevens:

  1. Selecteer Overzicht in het hoofdmenu van Device Provisioning Service.

  2. Kopieer de waarde van het id-bereik .

    Screenshot that shows copying the ID scope from the DPS overview pane.

  3. Open in Visual Studio het oplossingsbestand azure_iot_sdks.sln dat is gegenereerd door CMake uit te voeren. Het oplossingsbestand bevindt zich als het goed is op de volgende locatie:

    
    \azure-iot-sdk-c\cmake\azure_iot_sdks.sln
    
    

    Tip

    Als het bestand niet in de cmake-directory is gegenereerd, controleer dan of u een recente versie van het CMake-build-systeem hebt gebruikt.

  4. Ga in het venster Solution Explorer van Visual Studio naar de map Provision_Samples. Vouw het voorbeeldproject met de naam prov_dev_client_sample uit. Vouw bronbestanden uit en open prov_dev_client_sample.c.

  5. Zoek de id_scope constante en vervang de waarde door de id-bereikwaarde die u hebt gekopieerd uit Azure Portal.

    static const char* id_scope = "0ne00002193";
    
  6. Zoek de definitie voor de functie main() op in hetzelfde bestand. Zorg ervoor dat de variabele hsm_type is ingesteld op SECURE_DEVICE_TYPE_SYMMETRIC_KEY, zoals hieronder wordt weergegeven:

    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. Zoek de aanroep in prov_dev_set_symmetric_key_info()prov_dev_client_sample.c die als commentaar is opgenomen.

    // Set the symmetric key if using they auth type
    //prov_dev_set_symmetric_key_info("<symm_registration_id>", "<symmetric_Key>");
    

    Verwijder opmerkingen bij de functie-aanroep en vervang de waarden van de tijdelijke aanduiding (inclusief de punthaken) door de registratie-id die u hebt gekozen in Kies een unieke registratie-id voor het apparaat en de afgeleide apparaatsleutel die u hebt gegenereerd in Een apparaatsleutel afleiden.

    // Set the symmetric key if using they auth type
    prov_dev_set_symmetric_key_info("sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6", "Jsm0lyGpjaVYVP2g3FnmnmG9dI/9qU24wNoykUmermc=");
    

    Let op

    Houd er rekening mee dat deze stap de afgeleide apparaatsleutel verlaat die is opgenomen als onderdeel van de installatiekopieën voor elk apparaat, wat geen aanbevolen beveiligingsprocedures is. Dit is een van de redenen waarom beveiliging en gebruiksgemak vaak compromissen zijn. U moet de beveiliging van uw apparaten volledig controleren op basis van uw eigen vereisten.

  8. Sla het bestand op.

  9. Klik met de rechtermuisknop op het prov_dev_client_sample project en selecteer Instellen als opstartproject.

  10. Selecteer in het menu van Visual Studio de optie Debug>Start without debugging om de oplossing uit te voeren. Klik in de prompt om het project opnieuw te bouwen op Yes om het project opnieuw te bouwen voordat het wordt uitgevoerd.

    De volgende output is een voorbeeld waarbij het apparaat met succes verbinding maakt met het inrichtingsservice-exemplaar voor toewijzing aan een IoT-hub:

    Provisioning API Version: 1.9.1
    
    Registering Device
    
    Provisioning Status: PROV_DEVICE_REG_STATUS_CONNECTED
    Provisioning Status: PROV_DEVICE_REG_STATUS_ASSIGNING
    
    Registration Information received from service: contoso-hub-2.azure-devices.net, deviceId: sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6
    Press enter key to exit:
    

Met de voorbeeldinrichtingscode worden de volgende taken uitgevoerd:

  1. Verifieert uw apparaat met uw Device Provisioning-resource met behulp van de volgende drie parameters:

    • Het id-bereik van uw Device Provisioning Service
    • De registratie-id voor uw apparaat.
    • De afgeleide apparaatsleutel voor uw apparaat.
  2. Hiermee wordt het apparaat toegewezen aan de IoT-hub die al is gekoppeld aan uw Device Provisioning Service-exemplaar.

  3. Hiermee wordt een testtelemetriebericht verzonden naar de IoT-hub.

Het inrichtingsvoorbeeld bijwerken en uitvoeren met de apparaatgegevens:

  1. Selecteer Overzicht in het hoofdmenu van Device Provisioning Service.

  2. Kopieer de waarde van het id-bereik .

    Screenshot that shows copying the ID scope from the DPS overview pane.

  3. Open een opdrachtprompt en ga naar symmetricKeySample in de gekloonde SDK-opslagplaats:

    cd .\azure-iot-sdk-csharp\provisioning\device\samples\how to guides\SymmetricKeySample
    
  4. Open Parameters.cs in de map SymmetricKeySample in een teksteditor. Dit bestand bevat de parameters waarnaar wordt verwezen door het voorbeeld. Alleen de eerste drie vereiste parameters worden in dit artikel gebruikt bij het uitvoeren van het voorbeeld. Controleer de code in dit bestand. Er zijn geen wijzigingen nodig.

    Parameter Vereist Beschrijving
    --i of --IdScope Waar Het id-bereik van het DPS-exemplaar
    --r of --RegistrationId Waar De registratie-id voor het apparaat. De registratie-id is een niet-hoofdlettergevoelige tekenreeks (maximaal 128 tekens lang) met alfanumerieke tekens plus de speciale tekens: '-', '.', '_'. ':' Het laatste teken moet alfanumeriek of streepje ('-') zijn.
    --p of --PrimaryKey Waar De primaire sleutel van een afzonderlijke inschrijving of de afgeleide apparaatsleutel van een groepsinschrijving.
    --g of --GlobalDeviceEndpoint Onwaar Het globale eindpunt waarmee apparaten verbinding kunnen maken. Standaard ingesteld op global.azure-devices-provisioning.net
    --t of --TransportType Onwaar Het transport dat moet worden gebruikt om te communiceren met het inrichtingsexemplaren van het apparaat. Standaard ingesteld op Mqtt. Mogelijke waarden zijn, zoals Mqtt, Mqtt_WebSocket_Only, Mqtt_Tcp_Only, Amqp, Amqp_WebSocket_Only, en Amqp_Tcp_onlyHttp1.
  5. Open ProvisioningDeviceClientSample.cs in de map SymmetricKeySample in een teksteditor. Dit bestand laat zien hoe de klasse SecurityProviderSymmetricKey wordt gebruikt, samen met de klasse ProvisioningDeviceClient om uw gesimuleerde symmetrische-sleutelapparaat in te richten. Controleer de code in dit bestand. Er zijn geen wijzigingen nodig.

  6. Bouw en voer de voorbeeldcode uit met behulp van de volgende opdracht:

    • Vervang <id-scope> door het id-bereik dat u hebt gekopieerd uit Azure Portal.
    • Vervang <registration-id> door de registratie-id die u hebt gekozen in Kies een unieke registratie-id voor het apparaat.
    • Vervang door <primarykey> de afgeleide apparaatsleutel die u hebt gegenereerd.
    dotnet run --i <id-scope> --r <registration-id> --p <primarykey>
    
  7. Als het goed is, ziet u iets vergelijkbaars met de volgende uitvoer. Een 'TestMessage'-tekenreeks wordt als testbericht naar de hub verzonden.

    D:\azure-iot-sdk-csharp\provisioning\device\samples\how to guides\SymmetricKeySample>dotnet run --i 0ne00000A0A --r sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6 --p sbDDeEzRuEuGKag+kQKV+T1QGakRtHpsERLP0yPjwR93TrpEgEh/Y07CXstfha6dhIPWvdD1nRxK5T0KGKA+nQ==
    
    Initializing the device provisioning client...
    Initialized for registration Id sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6.
    Registering with the device provisioning service...
    Registration status: Assigned.
    Device sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6 registered to contoso-hub-2.azure-devices.net.
    Creating symmetric key authentication for IoT Hub...
    Testing the provisioned device with IoT Hub...
    Sending a telemetry message...
    Finished.
    

De voorbeeldinrichtingscode voert de volgende taken uit, in volgorde:

  1. Verifieert uw apparaat met uw Device Provisioning-resource met behulp van de volgende vier parameters:

    • PROVISIONING_HOST
    • PROVISIONING_IDSCOPE
    • PROVISIONING_REGISTRATION_ID
    • PROVISIONING_SYMMETRIC_KEY
  2. Hiermee wordt het apparaat toegewezen aan de IoT-hub die al is gekoppeld aan uw Device Provisioning Service-exemplaar.

  3. Hiermee wordt een testtelemetriebericht verzonden naar de IoT-hub.

Het inrichtingsvoorbeeld bijwerken en uitvoeren met de apparaatgegevens:

  1. Selecteer Overzicht in het hoofdmenu van Device Provisioning Service.

  2. Kopieer de waarde van het id-bereik .

    Screenshot that shows copying the ID scope from the DPS overview pane.

  3. Open een opdrachtprompt voor het uitvoeren van Node.js opdrachten en ga naar de volgende map:

    cd azure-iot-sdk-node\provisioning\device\samples
    
  4. Open in de map inrichting/apparaat/voorbeeldenregister_symkey. js en controleer de code.

    Het voorbeeld wordt standaard ingesteld op MQTT als transportprotocol. Als u een ander protocol wilt gebruiken, markeert u de volgende regel en geeft u commentaar op de regel voor het juiste protocol.

    var ProvisioningTransport = require('azure-iot-provisioning-device-mqtt').Mqtt;
    

    U ziet ook dat met de voorbeeldcode een aangepaste nettolading wordt ingesteld:

    provisioningClient.setProvisioningPayload({a: 'b'});
    

    U kunt deze code commentaar geven, omdat deze niet nodig is voor deze zelfstudie. Een aangepaste nettolading kan worden gebruikt wanneer u een webhook voor aangepaste toewijzing gebruikt om uw apparaat toe te wijzen aan een IoT Hub. Zie Zelfstudie: Aangepast toewijzingsbeleid gebruiken voor meer informatie.

    De provisioningClient.register()-methode probeert uw apparaat te registreren.

  5. Voer in de opdrachtprompt de volgende opdrachten uit om omgevingsvariabelen in te stellen die door het voorbeeld worden gebruikt:

    • Met de eerste opdracht wordt de PROVISIONING_HOST omgevingsvariabele ingesteld op het eindpunt van het globale apparaat. Dit eindpunt is hetzelfde voor alle DPS-exemplaren.
    • Vervang <id-scope> door het id-bereik dat u hebt gekopieerd uit Azure Portal.
    • Vervang <registration-id> door de registratie-id die u hebt gekozen in Kies een unieke registratie-id voor het apparaat.
    • Vervang door <defived-device-key> de afgeleide apparaatsleutel die u hebt gegenereerd in Een apparaatsleutel afleiden.
    set PROVISIONING_HOST=global.azure-devices-provisioning.net
    
    set PROVISIONING_IDSCOPE=<id-scope>
    
    set PROVISIONING_REGISTRATION_ID=<registration-id>
    
    set PROVISIONING_SYMMETRIC_KEY=<derived-device-key>
    
  6. Bouw en voer de voorbeeldcode uit met behulp van de volgende opdrachten:

     npm install
    
    node register_symkey.js
    
  7. U ziet nu iets vergelijkbaars met de volgende uitvoer. Als testbericht wordt een tekenreeks 'Hallo wereld' naar de hub verzonden.

    registration succeeded
    assigned hub=contoso-hub-2.azure-devices.net
    deviceId=sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6
    payload=undefined
    Client connected
    send status: MessageEnqueued
    

De voorbeeldinrichtingscode voert de volgende taken uit, in volgorde:

  1. Verifieert uw apparaat met uw Device Provisioning-resource met behulp van de volgende vier parameters:

    • PROVISIONING_HOST
    • PROVISIONING_IDSCOPE
    • PROVISIONING_REGISTRATION_ID
    • PROVISIONING_SYMMETRIC_KEY
  2. Hiermee wordt het apparaat toegewezen aan de IoT-hub die al is gekoppeld aan uw Device Provisioning Service-exemplaar.

  3. Hiermee wordt een testtelemetriebericht verzonden naar de IoT-hub.

Het inrichtingsvoorbeeld bijwerken en uitvoeren met de apparaatgegevens:

  1. Selecteer Overzicht in het hoofdmenu van Device Provisioning Service.

  2. Kopieer de waarde van het id-bereik .

    Screenshot that shows copying the ID scope from the DPS overview pane.

  3. Open een opdrachtprompt en ga naar de map waarin het voorbeeldbestand, provision_symmetric_key.py, zich bevindt.

    cd azure-iot-sdk-python\samples\async-hub-scenarios
    
  4. Voer in de opdrachtprompt de volgende opdrachten uit om omgevingsvariabelen in te stellen die door het voorbeeld worden gebruikt:

    • Met de eerste opdracht wordt de PROVISIONING_HOST omgevingsvariabele ingesteld op het eindpunt van het globale apparaat. Dit eindpunt is hetzelfde voor alle DPS-exemplaren.
    • Vervang <id-scope> door het id-bereik dat u hebt gekopieerd uit Azure Portal.
    • Vervang <registration-id> door de registratie-id die u hebt gekozen in Kies een unieke registratie-id voor het apparaat.
    • Vervang door <defived-device-key> de afgeleide apparaatsleutel die u hebt gegenereerd in Een apparaatsleutel afleiden.
    set PROVISIONING_HOST=global.azure-devices-provisioning.net
    
    set PROVISIONING_IDSCOPE=<id-scope>
    
    set PROVISIONING_REGISTRATION_ID=<registration-id>
    
    set PROVISIONING_SYMMETRIC_KEY=<derived-device-key>
    
  5. Installeer de azure-iot-device-bibliotheek door de volgende opdracht uit te voeren.

    pip install azure-iot-device
    
  6. Voer de Python-voorbeeldcode uit in provision_symmetric_key.py.

    python provision_symmetric_key.py
    
  7. U ziet nu iets vergelijkbaars met de volgende uitvoer. Sommige voorbeelden van telemetrieberichten over windsnelheid worden ook als test naar de hub verzonden.

    D:\azure-iot-sdk-python\samples\async-hub-scenarios>python provision_symmetric_key.py
    The complete registration result is
    sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6
    contoso-hub-2.azure-devices.net
    initialAssignment
    null
    Will send telemetry from the provisioned device
    sending message #1
    sending message #2
    sending message #3
    sending message #4
    sending message #5
    sending message #6
    sending message #7
    sending message #8
    sending message #9
    sending message #10
    done sending message #1
    done sending message #2
    done sending message #3
    done sending message #4
    done sending message #5
    done sending message #6
    done sending message #7
    done sending message #8
    done sending message #9
    done sending message #10
    

De voorbeeldinrichtingscode voert de volgende taken uit, in volgorde:

  1. Verifieert uw apparaat met uw Device Provisioning-resource met behulp van de volgende vier parameters:

    • GLOBAL_ENDPOINT
    • SCOPE_ID
    • REGISTRATION_ID
    • SYMMETRIC_KEY
  2. Hiermee wordt het apparaat toegewezen aan de IoT-hub die al is gekoppeld aan uw Device Provisioning Service-exemplaar.

  3. Hiermee wordt een testtelemetriebericht verzonden naar de IoT-hub.

Het inrichtingsvoorbeeld bijwerken en uitvoeren met de apparaatgegevens:

  1. Selecteer Overzicht in het hoofdmenu van Device Provisioning Service.

  2. Kopieer de waarde van het id-bereik .

    Screenshot that shows copying the ID scope from the DPS overview pane.

  3. Open de Java-voorbeeldcode voor het apparaat om deze te bewerken. Het volledige pad naar de voorbeeldcode voor het apparaat is:

    azure-iot-sdk-java/provisioning/provisioning-samples/provisioning-symmetrickey-individual-sample/src/main/java/samples/com/microsoft/azure/sdk/iot/ProvisioningSymmetricKeyIndividualEnrollmentSample.java

  4. Stel de waarde van de volgende variabelen in voor uw DPS- en apparaatinschrijving:

    • Vervang [Your scope ID here] door het id-bereik dat u hebt gekopieerd uit Azure Portal.
    • Vervang [Your Provisioning Service Global Endpoint here] door het globale apparaateindpunt: global.azure-devices-provisioning.net. Dit eindpunt is hetzelfde voor alle DPS-exemplaren.
    • Vervang door [Enter your Symmetric Key here] de afgeleide apparaatsleutel die u hebt gegenereerd in Een apparaatsleutel afleiden.
    • Vervang [Enter your Registration ID here] door de registratie-id die u hebt gekozen in Kies een unieke registratie-id voor het apparaat.
    private static final String SCOPE_ID = "[Your scope ID here]";
    private static final String GLOBAL_ENDPOINT = "[Your Provisioning Service Global Endpoint here]";
    private static final String SYMMETRIC_KEY = "[Enter your Symmetric Key here]";
    private static final String REGISTRATION_ID = "[Enter your Registration ID here]";
    

    Let op

    Houd er rekening mee dat deze stap de afgeleide apparaatsleutel verlaat die is opgenomen als onderdeel van de installatiekopieën voor elk apparaat, wat geen aanbevolen beveiligingsprocedures is. Dit is een van de redenen waarom beveiliging en gebruiksgemak vaak compromissen zijn. U moet de beveiliging van uw apparaten volledig controleren op basis van uw eigen vereisten.

  5. Open een opdrachtprompt voor compileren. Ga naar de projectmap van het inrichtingsvoorbeeld van de Java SDK-opslagplaats.

    cd azure-iot-sdk-java\provisioning\provisioning-device-client-samples\provisioning-symmetrickey-individual-sample
    
  6. Bouw het voorbeeld.

    mvn clean install
    
  7. Ga naar de target map en voer het gemaakte .jar bestand uit. Vervang in de java opdracht de {version} tijdelijke aanduiding door de versie in de .jar bestandsnaam op uw computer.

    cd target
    java -jar ./provisioning-symmetrickey-individual-sample-{version}-with-deps.jar
    
  8. U ziet nu iets vergelijkbaars met de volgende uitvoer.

    Starting...
    Beginning setup.
    WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance.
    2022-10-07 18:14:48,388 DEBUG (main) [com.microsoft.azure.sdk.iot.provisioning.device.ProvisioningDeviceClient] - Initialized a ProvisioningDeviceClient instance using SDK version 2.0.2
    2022-10-07 18:14:48,390 DEBUG (main) [com.microsoft.azure.sdk.iot.provisioning.device.ProvisioningDeviceClient] - Starting provisioning thread...
    Waiting for Provisioning Service to register
    2022-10-07 18:14:48,392 INFO (global.azure-devices-provisioning.net-002edcf5-CxnPendingConnectionId-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Opening the connection to device provisioning service...
    2022-10-07 18:14:48,518 INFO (global.azure-devices-provisioning.net-002edcf5-Cxn002edcf5-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Connection to device provisioning service opened successfully, sending initial device registration message
    2022-10-07 18:14:48,521 INFO (global.azure-devices-provisioning.net-002edcf5-Cxn002edcf5-azure-iot-sdk-RegisterTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.RegisterTask] - Authenticating with device provisioning service using symmetric key
    2022-10-07 18:14:49,252 INFO (global.azure-devices-provisioning.net-002edcf5-Cxn002edcf5-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Waiting for device provisioning service to provision this device...
    2022-10-07 18:14:49,253 INFO (global.azure-devices-provisioning.net-002edcf5-Cxn002edcf5-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Current provisioning status: ASSIGNING
    2022-10-07 18:14:52,459 INFO (global.azure-devices-provisioning.net-002edcf5-Cxn002edcf5-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Device provisioning service assigned the device successfully
    IotHUb Uri : contoso-hub-2.azure-devices.net
    Device ID : sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6
    2022-10-07 18:14:58,424 INFO (main) [com.microsoft.azure.sdk.iot.device.transport.ExponentialBackoffWithJitter] - NOTE: A new instance of ExponentialBackoffWithJitter has been created with the following properties. Retry Count: 2147483647, Min Backoff Interval: 100, Max Backoff Interval: 10000, Max Time Between Retries: 100, Fast Retry Enabled: true
    2022-10-07 18:14:58,436 INFO (main) [com.microsoft.azure.sdk.iot.device.transport.ExponentialBackoffWithJitter] - NOTE: A new instance of ExponentialBackoffWithJitter has been created with the following properties. Retry Count: 2147483647, Min Backoff Interval: 100, Max Backoff Interval: 10000, Max Time Between Retries: 100, Fast Retry Enabled: true
    2022-10-07 18:14:58,440 DEBUG (main) [com.microsoft.azure.sdk.iot.device.DeviceClient] - Initialized a DeviceClient instance using SDK version 2.1.1
    2022-10-07 18:14:58,450 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.MqttIotHubConnection] - Opening MQTT connection...
    2022-10-07 18:14:58,471 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.Mqtt] - Sending MQTT CONNECT packet...
    2022-10-07 18:14:59,314 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.Mqtt] - Sent MQTT CONNECT packet was acknowledged
    2022-10-07 18:14:59,315 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.Mqtt] - Sending MQTT SUBSCRIBE packet for topic devices/sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6/messages/devicebound/#
    2022-10-07 18:14:59,378 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.Mqtt] - Sent MQTT SUBSCRIBE packet for topic devices/sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6/messages/devicebound/# was acknowledged
    2022-10-07 18:14:59,379 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.MqttIotHubConnection] - MQTT connection opened successfully
    2022-10-07 18:14:59,381 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - The connection to the IoT Hub has been established
    2022-10-07 18:14:59,383 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Updating transport status to new status CONNECTED with reason CONNECTION_OK
    2022-10-07 18:14:59,389 DEBUG (main) [com.microsoft.azure.sdk.iot.device.DeviceIO] - Starting worker threads
    2022-10-07 18:14:59,392 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Invoking connection status callbacks with new status details
    2022-10-07 18:14:59,395 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Client connection opened successfully
    2022-10-07 18:14:59,404 INFO (main) [com.microsoft.azure.sdk.iot.device.DeviceClient] - Device client opened successfully
    Sending message from device to IoT Hub...
    2022-10-07 18:14:59,408 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Message was queued to be sent later ( Message details: Correlation Id [32cf12c4-4db1-4562-9d8c-267c0506636f] Message Id [2e1717be-cfcf-41a7-b1c0-59edeb8ea865] )
    Press any key to exit...
    2022-10-07 18:14:59,409 DEBUG (contoso-hub-2.azure-devices.net-sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6-c32c76d0-Cxn0e70bbf7-8476-441d-8626-c17250585ee6-azure-iot-sdk-IotHubSendTask) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Sending message ( Message details: Correlation Id [32cf12c4-4db1-4562-9d8c-267c0506636f] Message Id [2e1717be-cfcf-41a7-b1c0-59edeb8ea865] )
    2022-10-07 18:14:59,777 DEBUG (MQTT Call: sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - IotHub message was acknowledged. Checking if there is record of sending this message ( Message details: Correlation Id [32cf12c4-4db1-4562-9d8c-267c0506636f] Message Id [2e1717be-cfcf-41a7-b1c0-59edeb8ea865] )
    2022-10-07 18:14:59,779 DEBUG (contoso-hub-2.azure-devices.net-sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6-c32c76d0-Cxn0e70bbf7-8476-441d-8626-c17250585ee6-azure-iot-sdk-IotHubSendTask) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Invoking the callback function for sent message, IoT Hub responded to message ( Message details: Correlation Id [32cf12c4-4db1-4562-9d8c-267c0506636f] Message Id [2e1717be-cfcf-41a7-b1c0-59edeb8ea865] ) with status OK
    Message received! Response status: OK
    

De registratie van de apparaatinrichting bevestigen

In deze zelfstudie hebt u het beleid voor statische configuratietoewijzing gebruikt om apparaten toe te wijzen die zich registreren via de inschrijvingsgroep aan dezelfde IoT-hub. Voor toewijzingen waarbij een apparaat kan worden ingericht voor een van de verschillende IoT-hubs, kunt u de registratierecords van de inschrijvingsgroep controleren om te zien voor welke IoT-hub het apparaat is ingericht:

  1. Ga in Azure Portal naar uw DPS-exemplaar.

  2. Selecteer Inschrijvingen beheren in het menu Instellingen.

  3. Selecteer Inschrijvingsgroepen.

  4. Selecteer de inschrijvingsgroep die u voor deze zelfstudie hebt gemaakt.

  5. Selecteer registratiestatus op de pagina Details van de inschrijvingsgroep.

  6. Zoek de apparaat-id voor de kolom Apparaat-id van uw apparaat en noteer de IoT-hub in de kolom Toegewezen IoT-hub.

    U kunt de apparaatrecord selecteren om meer details weer te geven, zoals de eerste dubbel die aan het apparaat is toegewezen.

Ga als volgende te werk om het apparaat op uw IoT-hub te verifiëren:

  1. Ga in Azure Portal naar de IoT-hub waaraan uw apparaat is toegewezen.

  2. Selecteer Apparaten in het menu Apparaatbeheer.

  3. Als uw apparaat is ingericht, moet de apparaat-id worden weergegeven in de lijst, waarbij status is ingesteld als ingeschakeld. Als u uw apparaat niet ziet, selecteert u Vernieuwen.

    Device is registered with the IoT hub

Notitie

Als u de initiële status van de apparaatdubbel hebt gewijzigd van de standaardwaarde in de inschrijvingsgroep, kan een apparaat de gewenste dubbelstatus ophalen uit de hub en dienovereenkomstig handelen. Zie Apparaatdubbels begrijpen en gebruiken in IoT Hub voor meer informatie.

Meer apparaten inrichten

Volg de stappen in de voorgaande secties om meer apparaten in te richten via de inschrijvingsgroep:

  1. Kies een unieke registratie-id voor het apparaat.

  2. Een apparaatsleutel afleiden. Zoals u eerder hebt gedaan, gebruikt u de primaire sleutel voor de inschrijvingsgroep als de groepssleutel.

  3. Voer de apparaatinrichtingscode uit. Vervang de benodigde artefacten door uw nieuwe afgeleide apparaatsleutel en registratie-id.

Resources opschonen

Als u van plan bent om door te gaan met het voorbeeld van de apparaatclient, moet u de resources die in deze zelfstudie zijn gemaakt, niet opschonen. Als u niet van plan bent om door te gaan, gebruikt u de volgende stappen om alle resources te verwijderen die in deze zelfstudie zijn gemaakt.

Uw inschrijvingsgroep verwijderen

Als u een registratiegroep verwijdert, worden de bijbehorende registratierecords niet verwijderd. Deze zwevende records tellen mee voor het quotum voor registraties voor het DPS-exemplaar. Daarom is het raadzaam om alle registratierecords te verwijderen die zijn gekoppeld aan een inschrijvingsgroep voordat u de inschrijvingsgroep zelf verwijdert.

  1. Ga in Azure Portal naar uw DPS-exemplaar.

  2. Selecteer Inschrijvingen beheren in het menu Instellingen.

  3. Selecteer het tabblad Inschrijvingsgroepen .

  4. Selecteer de naam van de inschrijvingsgroep die u voor deze zelfstudie hebt gebruikt om de bijbehorende detailpagina te openen.

  5. Selecteer registratiestatus op de pagina Inschrijvingsgegevens. Schakel vervolgens het selectievakje in naast de kolomkop Apparaat-id om alle registratierecords voor de inschrijvingsgroep te selecteren. Selecteer Verwijderen boven aan de pagina om de registratierecords te verwijderen.

  6. Ga terug naar de pagina Inschrijvingen beheren.

  7. Schakel het selectievakje in naast de naam van de inschrijvingsgroep die u voor deze zelfstudie hebt gebruikt.

  8. Selecteer Verwijderen bovenaan de pagina.

Apparaatregistraties verwijderen uit IoT Hub

  1. Ga in Azure Portal naar de IoT-hub waaraan uw apparaat is toegewezen.

  2. Selecteer Apparaten in de sectie Apparaatbeheer van het navigatiemenu.

  3. Schakel het selectievakje in naast de apparaat-id van de apparaten die u in deze zelfstudie hebt geregistreerd.

  4. Selecteer Verwijderen bovenaan de pagina.

Volgende stappen

In deze zelfstudie hebt u meerdere apparaten ingericht voor één IoT-hub met behulp van een inschrijvingsgroep. Hierna leert u hoe u IoT-apparaten in meerdere hubs inricht.