Créer par programme une inscription individuelle auprès du service Device Provisioning pour l’attestation TPM
Cet article montre comment créer par programme une inscription individuelle pour un appareil TPM auprès du service Azure IoT Hub Device Provisioning en utilisant le kit de développement logiciel (SDK) du service DPS Azure IoT Hub et un exemple d’application. Après avoir créé l’inscription individuelle, vous pouvez inscrire un appareil TPM simulé auprès du service d’approvisionnement via cette entrée d’inscription.
Bien que ces étapes fonctionnent sur les ordinateurs Windows et Linux, cet article utilise un ordinateur de développement Windows.
Prérequis
-
Si vous n’avez pas d’abonnement Azure, créez un compte gratuit Azure avant de commencer.
Effectuez les étapes décrites dans Configurer le service IoT Hub Device Provisioning avec le portail Azure.
Installez le kit SDK .NET 6.0 ou une version ultérieure sur votre machine Windows. Vous pouvez exécuter la commande suivante pour vérifier votre version.
dotnet --info
(Facultatif) Si vous souhaitez inscrire un appareil simulé à la fin de cet article, suivez la procédure décrite dans Créer et approvisionner un appareil TPM simulé jusqu’à l’étape où vous obtenez une paire de clés de type EK (Endorsement Key) pour l’appareil. Enregistrez la paire de clés de type EK (Endorsement Key), car vous l’utiliserez plus loin dans cet article.
Ne suivez pas les étapes de création d’une inscription individuelle avec le portail Azure.
Installez Node.js v4.0+.
(Facultatif) Si vous voulez inscrire un appareil simulé à la fin de ce guide de démarrage rapide, suivez la procédure décrite dans Créer et approvisionner un appareil TPM simulé jusqu’à l’étape où vous obtenez une paire de clés de type EK (Endorsement Key) et un ID d’inscription pour l’appareil. Enregistrez la paire de clés de type EK (Endorsement Key) et l’ID d’inscription, car vous les utiliserez plus loin dans cet article.
Ne suivez pas les étapes de création d’une inscription individuelle avec le portail Azure.
Installez le Java SE Development Kit 8. L’installation du Kit de développement logiciel (SDK) du service Java s’effectue plus loin dans l’article. Il fonctionne à la fois sur Windows et Linux. Cet article utilise Windows.
Installez Maven 3.
Installez Git en veillant à ce que le chemin soit ajouté à la variable d’environnement
PATH
.(Facultatif) Si vous souhaitez inscrire un appareil simulé à la fin de cet article, suivez la procédure décrite dans Créer et approvisionner un appareil TPM simulé jusqu’à l’étape où vous obtenez une paire de clés de type EK (Endorsement Key) pour l’appareil. Notez la paire de clés de type EK (Endorsement Key) et l’ID d’inscription, car vous les utiliserez plus loin dans cet article.
Ne suivez pas les étapes de création d’une inscription individuelle avec le portail Azure.
Obtenir la chaîne de connexion de votre service d’approvisionnement
Pour l’exemple de cet article, vous utilisez la chaîne de connexion pour votre service d’approvisionnement.
Connectez-vous au portail Azure.
Dans le menu de gauche ou dans la page du portail, sélectionnez Toutes les ressources.
Sélectionnez votre service Device Provisioning.
Dans le menu Paramètres, sélectionnez Stratégies d’accès partagées.
Sélectionnez la stratégie d’accès que vous souhaitez utiliser.
Dans le panneau Stratégie d’accès, copiez et enregistrez la chaîne de connexion de la clé primaire.
Créer l’exemple d’inscription individuelle
Cette section montre comment créer une application console .NET Core qui ajoute une inscription individuelle pour un appareil TPM à votre service de provisionnement.
Ouvrez une invite de commandes Windows et naviguez jusqu’au dossier dans lequel vous souhaitez créer votre application.
Pour créer un projet de console, exécutez la commande suivante :
dotnet new console --framework net6.0 --use-program-main
Pour ajouter une référence au kit de développement logiciel (SDK) du service DPS, exécutez la commande suivante :
dotnet add package Microsoft.Azure.Devices.Provisioning.Service
Cette étape lance le téléchargement et l’installation et ajoute une référence au package NuGet client du service Azure IoT DPS et ses dépendances. Ce package inclut les fichiers binaires du kit de développement logiciel (SDK) du service .NET.
Ouvrez le fichier Program.cs dans un éditeur.
Remplacez l’instruction d’espace de noms du début du fichier par ce qui suit :
namespace CreateIndividualEnrollment;
Ajoutez les instructions
using
suivantes au début du fichier au-dessus de l’instructionnamespace
.using System.Threading.Tasks; using Microsoft.Azure.Devices.Provisioning.Service;
Ajoutez les champs suivants à la classe
Program
et effectuez les modifications mentionnées.private static string ProvisioningConnectionString = "{ProvisioningServiceConnectionString}"; private const string RegistrationId = "sample-registrationid-csharp"; private const string TpmEndorsementKey = "AToAAQALAAMAsgAgg3GXZ0SEs/gakMyNRqXXJP1S124GUgtk8qHaGzMUaaoABgCAAEMAEAgAAAAAAAEAxsj2gUS" + "cTk1UjuioeTlfGYZrrimExB+bScH75adUMRIi2UOMxG1kw4y+9RW/IVoMl4e620VxZad0ARX2gUqVjYO7KPVt3d" + "yKhZS3dkcvfBisBhP1XH9B33VqHG9SHnbnQXdBUaCgKAfxome8UmBKfe+naTsE5fkvjb/do3/dD6l4sGBwFCnKR" + "dln4XpM03zLpoHFao8zOwt8l/uP3qUIxmCYv9A7m69Ms+5/pCkTu/rK4mRDsfhZ0QLfbzVI6zQFOKF/rwsfBtFe" + "WlWtcuJMKlXdD8TXWElTzgh7JS4qhFzreL0c1mI0GCj+Aws0usZh7dLIVPnlgZcBhgy1SSDQMQ=="; // Optional parameters private const string OptionalDeviceId = "myCSharpDevice"; private const ProvisioningStatus OptionalProvisioningStatus = ProvisioningStatus.Enabled;
Remplacez la valeur de l’espace réservé
ProvisioningServiceConnectionString
par la chaîne de connexion du service de provisionnement que vous avez copiée dans la section précédente.Si vous utilisez cet article avec le guide de démarrage rapide Créer et approvisionner un appareil TPM simulé pour approvisionner un appareil simulé, remplacez la paire de clés de type EK (Endorsement Key) par la valeur dont vous avez pris note dans ce guide. Vous pouvez remplacer l’ID d’appareil et l’ID d’inscription par les valeurs suggérées dans ce guide de démarrage rapide, utiliser vos propres valeurs ou les valeurs par défaut dans cet exemple.
Ajoutez la méthode suivante à la classe
Program
. Ce code crée une entrée d’inscription individuelle, puis appelle la méthodeCreateOrUpdateIndividualEnrollmentAsync
surProvisioningServiceClient
pour ajouter l’inscription individuelle au service d’approvisionnement.public static async Task RunSample() { Console.WriteLine("Starting sample..."); using (ProvisioningServiceClient provisioningServiceClient = ProvisioningServiceClient.CreateFromConnectionString(ProvisioningConnectionString)) { #region Create a new individualEnrollment config Console.WriteLine("\nCreating a new individualEnrollment object..."); Attestation attestation = new TpmAttestation(TpmEndorsementKey); IndividualEnrollment individualEnrollment = new IndividualEnrollment( RegistrationId, attestation); // The following parameters are optional. Remove them if you don't need them. individualEnrollment.DeviceId = OptionalDeviceId; individualEnrollment.ProvisioningStatus = OptionalProvisioningStatus; #endregion #region Create the individualEnrollment Console.WriteLine("\nAdding the individualEnrollment to the provisioning service..."); IndividualEnrollment individualEnrollmentResult = await provisioningServiceClient.CreateOrUpdateIndividualEnrollmentAsync(individualEnrollment).ConfigureAwait(false); Console.WriteLine("\nIndividualEnrollment created with success."); Console.WriteLine(individualEnrollmentResult); #endregion } }
Enfin, remplacez la méthode
Main
par les lignes suivantes :static async Task Main(string[] args) { await RunSample(); Console.WriteLine("\nHit <Enter> to exit ..."); Console.ReadLine(); }
Enregistrez les changements apportés.
Conseil
Par souci de simplicité, cet exemple utilise l’authentification SAP pour se connecter à l’API de service DPS. Une approche plus sécurisée consiste à utiliser les informations d’identification de jeton Azure. Pour obtenir un exemple de cette méthode d’authentification, consultez l’exemple create_tpm_enrollment_with_token_credentials.js dans le kit de développement logiciel (SDK) Node.js.
À partir d’une fenêtre de commande dans votre dossier de travail, exécutez :
npm install azure-iot-provisioning-service
Cette étape lance le téléchargement et l’installation et ajoute une référence au package client du service Azure IoT DPS et ses dépendances. Ce package inclut les fichiers binaires du kit de développement logiciel (SDK) du service Node.js.
À l’aide d’un éditeur de texte, créez un fichiercreate_individual_enrollment.js dans votre dossier de travail. Ajoutez le code suivant au fichier :
'use strict'; var provisioningServiceClient = require('azure-iot-provisioning-service').ProvisioningServiceClient; var serviceClient = provisioningServiceClient.fromConnectionString(process.argv[2]); var endorsementKey = process.argv[3]; var enrollment = { registrationId: 'first', attestation: { type: 'tpm', tpm: { endorsementKey: endorsementKey } } }; serviceClient.createOrUpdateIndividualEnrollment(enrollment, function(err, enrollmentResponse) { if (err) { console.log('error creating the individual enrollment: ' + err); } else { console.log("enrollment record returned: " + JSON.stringify(enrollmentResponse, null, 2)); } });
Enregistrez le fichier.
Ouvrez une invite de commandes Windows.
Clonez les kits de développement logiciel (SDK) Microsoft Azure IoT pour le référentiel GitHub Java :
git clone https://github.com/Azure/azure-iot-sdk-java.git --recursive
Accédez à l’exemple de dossier :
cd azure-iot-sdk-java\provisioning\provisioning-service-client-samples\service-enrollment-sample
Ouvrez le fichier \src\main\java\samples\com\microsoft\azure\sdk\iot\ServiceEnrollmentSample.java dans un éditeur.
Remplacez
[Provisioning Connection String]
par la chaîne de connexion que vous avez copiée dans Obtenir la chaîne de connexion de votre service de provisionnement.private static final String PROVISIONING_CONNECTION_STRING = "[Provisioning Connection String]";
Ajoutez les détails de l’appareil TPM. Remplacez
[RegistrationId]
et[TPM Endorsement Key]
dans les instructions suivantes par votre paire de clés de type EK (Endorsement Key) et votre ID d’inscription.private static final String REGISTRATION_ID = "[RegistrationId]"; private static final String TPM_ENDORSEMENT_KEY = "[TPM Endorsement Key]";
Si vous utilisez cet article avec le guide de démarrage rapide Créer et approvisionner un appareil TPM simulé pour approvisionner un appareil simulé, utilisez les valeurs ID d’inscription et Paire de clés de type EK (Endorsement Key) dont vous avez pris note dans ce guide.
Si vous utilisez cet article pour créer un exemple d’inscription individuelle et sans intention de vous en servir pour inscrire un appareil, vous pouvez utiliser la valeur suivante pour une paire de clés de type EK (Endorsement Key) :
private static final String TPM_ENDORSEMENT_KEY = "AToAAQALAAMAsgAgg3GXZ0SEs/gakMyNRqXXJP1S124GUgtk8qHaGzMUaaoABgCAAEMAEAgAAAAAAAEAxsj2gUScTk1UjuioeTlfGYZrrimExB+bScH75adUMRIi2UOMxG1kw4y+9RW/IVoMl4e620VxZad0ARX2gUqVjYO7KPVt3dyKhZS3dkcvfBisBhP1XH9B33VqHG9SHnbnQXdBUaCgKAfxome8UmBKfe+naTsE5fkvjb/do3/dD6l4sGBwFCnKRdln4XpM03zLpoHFao8zOwt8l/uP3qUIxmCYv9A7m69Ms+5/pCkTu/rK4mRDsfhZ0QLfbzVI6zQFOKF/rwsfBtFeWlWtcuJMKlXdD8TXWElTzgh7JS4qhFzreL0c1mI0GCj+Aws0usZh7dLIVPnefZcBhgy1SSDQMQ==";
Entrez votre propre valeur pour l’ID d’inscription.
Pour les inscriptions individuelles, vous pouvez choisir de définir un ID d’appareil que DPS attribue à l’appareil lors de son approvisionnement sur IoT Hub. Si vous n’attribuez pas d’ID d’appareil, DPS utilise l’ID d’inscription en tant qu’ID d’appareil. Par défaut, cet exemple attribue « myJavaDevice » en tant qu’ID d’appareil. Si vous souhaitez modifier l’ID de l’appareil, modifiez l’instruction suivante :
private static final String DEVICE_ID = "myJavaDevice";
Si vous ne souhaitez pas attribuer d’ID d’appareil spécifique, commentez l’instruction suivante :
individualEnrollment.setDeviceId(DEVICE_ID);
Cet exemple vous permet de définir un hub IoT dans l’inscription individuelle pour approvisionner l’appareil. Ce hub IoT doit avoir été précédemment lié au service d’approvisionnement. Pour cet article, nous laissons DPS choisir parmi les hubs liés en fonction de la stratégie d’allocation par défaut, la distribution uniformément pondérée. Dans le fichier, commentez l’instruction suivante :
individualEnrollment.setIotHubHostName(IOTHUB_HOST_NAME);
L’exemple crée, met à jour, interroge et supprime l’inscription d’un appareil TPM. Pour vérifier la validité de l’inscription sur le portail, commentez temporairement les lignes suivantes de code à la fin du fichier :
// *********************************** Delete info of individualEnrollment ************************************ System.out.println("\nDelete the individualEnrollment..."); provisioningServiceClient.deleteIndividualEnrollment(REGISTRATION_ID);
Enregistrez les changements apportés.
Exécuter l’exemple d’inscription individuelle
Exécutez l’exemple :
dotnet run
Une fois la création terminée, la fenêtre de commande affiche les propriétés de la nouvelle inscription.
Pour exécuter l’exemple, vous devez disposer de la chaîne de connexion du service d’approvisionnement que vous avez copiée dans la section précédente et de la paire de clés de type EK (Endorsement Key) pour l’appareil. Si vous avez suivi le guide de démarrage rapide Créer et approvisionner un appareil simulé pour créer un appareil TPM simulé, utilisez la paire de clés de type EK (Endorsement Key) créée pour cet appareil. Sinon, pour créer un exemple d’inscription individuelle, vous pouvez utiliser la paire de clés de type EK (Endorsement Key) suivante fournie avec le kit Node.js Service SDK :
AToAAQALAAMAsgAgg3GXZ0SEs/gakMyNRqXXJP1S124GUgtk8qHaGzMUaaoABgCAAEMAEAgAAAAAAAEAxsj2gUScTk1UjuioeTlfGYZrrimExB+bScH75adUMRIi2UOMxG1kw4y+9RW/IVoMl4e620VxZad0ARX2gUqVjYO7KPVt3dyKhZS3dkcvfBisBhP1XH9B33VqHG9SHnbnQXdBUaCgKAfxome8UmBKfe+naTsE5fkvjb/do3/dD6l4sGBwFCnKRdln4XpM03zLpoHFao8zOwt8l/uP3qUIxmCYv9A7m69Ms+5/pCkTu/rK4mRDsfhZ0QLfbzVI6zQFOKF/rwsfBtFeWlWtcuJMKlXdD8TXWElTzgh7JS4qhFzreL0c1mI0GCj+Aws0usZh7dLIVPnlgZcBhgy1SSDQMQ==
Afin de créer une inscription individuelle pour votre appareil TPM, exécutez la commande suivante (sans oublier les guillemets autour des arguments de commande) :
node create_individual_enrollment.js "<the connection string for your provisioning service>" "<endorsement key>"
Une fois la création terminée, la fenêtre de commande affiche les propriétés de la nouvelle inscription.
À partir du dossier azure-iot-sdk-java\provisioning\provisioning-service-client-samples\service-enrollment-sample, à votre invite de commandes, exécutez la commande suivante pour générer l’exemple :
mvn install -DskipTests
Cette commande télécharge le package Maven client du service Azure IoT DPS sur votre machine et génère l’exemple. Ce package inclut les fichiers binaires du kit Java Service SDK.
Basculez vers le dossier cible et exécutez l’exemple. La build de l’étape précédente produit un fichier .jar dans le dossier cible avec le format de fichier suivant :
service-enrollment-sample-{version}-with-deps.jar
; par exemple :service-enrollment-sample-1.8.1-with-deps.jar
. Vous devrez peut-être remplacer la version dans la commande suivant.cd target java -jar ./service-enrollment-sample-1.8.1-with-deps.jar
Une fois la création terminée, la fenêtre de commande affiche les propriétés de la nouvelle inscription.
Pour vérifier que l’inscription individuelle a été créée :
Dans le portail Azure, accédez à l’instance de Device Provisioning Service.
Dans le menu Paramètres, sélectionnez Gérer les inscriptions.
Sélectionnez l’onglet Inscriptions individuelles. Vous devez voir une nouvelle entrée d’inscription qui correspond à l’ID d’inscription que vous avez utilisé dans l’exemple.
Inscrire un appareil simulé (facultatif)
Si vous avez suivi les étapes du guide de démarrage rapide Créer et approvisionner un appareil TPM simulé, reprenez ce guide à l’étape Inscrire l’appareil.
Si vous avez suivi les étapes du guide de démarrage rapide Créer et approvisionner un appareil TPM simulé, reprenez ce guide à l’étape Inscrire l’appareil.
Si vous avez suivi les étapes du guide de démarrage rapide Créer et approvisionner un appareil TPM simulé, reprenez ce guide à l’étape Inscrire l’appareil.
Nettoyer les ressources
Si vous prévoyez d’explorer les tutoriels sur DPS, ne supprimez pas les ressources créées dans cet article. Sinon, utilisez les étapes suivantes pour supprimer toutes les ressources créées par cet article.
Dans le portail Azure, accédez à l’instance de Device Provisioning Service.
Dans le menu Paramètres, sélectionnez Gérer les inscriptions.
Sélectionnez l’onglet Inscriptions individuelles.
Cochez la case à côté de l’ID d’inscription de l’entrée d’abonnement que vous avez créée dans cet article.
En haut de la page, sélectionnez Supprimer.
Si vous avez suivi les étapes décrites dans Créer et provisionner un appareil TPM simulé pour créer un appareil TPM simulé, effectuez les étapes suivantes :
Dans le portail Azure, accédez au IoT Hub au sein duquel votre appareil était approvisionné.
Dans le menu de gauche, sous Gestion des appareils, sélectionnez Appareils.
Cochez la case à côté de l’ID d’appareil de l’appareil que vous avez inscrit dans cet article.
En haut du volet, sélectionnez Supprimer.
Si vous avez suivi les étapes décrites dans Créer et provisionner un appareil TPM simulé pour créer un appareil TPM simulé, effectuez les étapes suivantes :
Fermez la fenêtre du simulateur TPM et la fenêtre d’exemple de sortie pour l’appareil simulé.
Dans le portail Azure, accédez au IoT Hub au sein duquel votre appareil était approvisionné.
Dans le menu de gauche, sous Gestion des appareils, sélectionnez Appareils.
Cochez la case à côté de l’ID d’appareil de l’appareil que vous avez inscrit dans cet article.
En haut du volet, sélectionnez Supprimer.
Si vous avez suivi les étapes décrites dans Créer et provisionner un appareil TPM simulé pour créer un appareil TPM simulé, effectuez les étapes suivantes :
Fermez la fenêtre du simulateur TPM et la fenêtre d’exemple de sortie pour l’appareil simulé.
Dans le portail Azure, accédez au IoT Hub au sein duquel votre appareil était approvisionné.
Dans le menu de gauche, sous Gestion des appareils, sélectionnez Appareils.
Cochez la case à côté de l’ID d’appareil de l’appareil que vous avez inscrit dans cet article.
En haut du volet, sélectionnez Supprimer.
Étapes suivantes
Dans cet article, vous créez programmatiquement une entrée d’inscription individuelle pour un appareil TPM. Si vous avez choisi de le faire, vous avez créé un appareil simulé TPM sur votre ordinateur et vous l’avez provisionné sur votre hub IoT avec le service Azure IoT Hub Device Provisioning. Pour en savoir plus, consultez les liens suivants :
Pour plus d’informations sur l’attestation TPM avec DPS, consultez Attestation TPM.
Pour obtenir un exemple de bout en bout d’approvisionnement d’un appareil via une inscription individuelle à l’aide de l’attestation TPM, consultez le guide de démarrage rapide Approvisionner un appareil TPM simulé .
Pour en savoir plus sur la gestion des inscriptions individuelles et des groupes d’inscriptions à l’aide du portail Azure, consultez Guide pratique pour gérer les inscriptions d’appareils avec le portail Azure.