التشغيل السريع - توفير جهاز TPM كمحاكاةٍ

في هذا التشغيل السريع، ستنشئ جهاز محاكاة على كمبيوتر يعمل بنظام التشغيل Windows. سيتم تكوين الجهاز المحاكي لاستخدام آلية إثبات الوحدة النمطية للنظام الأساسي الموثوق به (TPM) للمصادقة. بعد تكوين جهازك، ستقوم بتوفيره إلى مركز IoT الخاص بك باستخدام Azure IoT Hub Device Provisioning Service. سيتم بعد ذلك استخدام نموذج التعليمات البرمجية للمساعدة في تسجيل الجهاز باستخدام مثيل خدمة توفير الجهاز.

إذا لم تكن على دراية بعملية التوفير، فراجع نظرة عامة على التوفير. التأكد أيضاً من إكمال الخطوات في Set up IoT Hub Device Provisioning Service with the Azure portal قبل المتابعة.

تدعم خدمة توفير أجهزة Azure IoT نوعين من التسجيلات:

توضح هذه المقالة التسجيلات الفردية.

شهادة الوحدة النمطية للنظام الأساسي الموثوق به (TPM) غير مدعومة في Python SDK. باستخدام Python، يمكنك توفير جهاز باستخدام مفاتيح متماثلة أو شهادات X.509.

المتطلبات الأساسية

المتطلبات الأساسية التالية هي لبيئة تطوير Windows. بالنسبة إلى Linux أو macOS، راجع القسم المناسب في إعداد بيئة التطوير في وثائق SDK.

  • وحدة أمان أجهزة TPM 2.0 على جهازك المستند إلى Windows.

  • قم بتثبيت .NET Core SDK 6.0 أو أحدث على جهازك المستند إلى Windows. يمكنك استخدام الأمر التالي للتحقق من الإصدار الخاص بك.

    dotnet --info
    
  • ‏‏تثبيت آخر إصدار من Git. تأكد من إضافة Git إلى متغيرات البيئة التي يمكن الوصول إليها من نافذة الأمر. راجع أدوات عميل Software Freedom Conservancy's Git للحصول على أحدث إصدار من أدوات git للتثبيت، والتي تتضمن Git Bash، وهو تطبيق سطر الأوامر الذي يمكن استخدامه للتفاعل مع مستودع Git المحلي خاصتك.

جهز بيئة التطوير الخاصة بك

في هذا القسم، ستقوم بتحضير بيئة تطوير مستخدمة في إنشاء Azure IoT C SDKوعينة محاكاة جهاز TPM.

  1. قم بتنزيل أحدث نظام بنية CMake.

    هام

    تأكد من تثبيت المتطلبات الأساسية لبرنامج Visual Studio (حمل عمل Visual Studio و"تطوير سطح المكتب باستخدام C ++") على جهازك، قبل بدء تثبيت CMake. بمجرد أن يتم وضع المتطلبات الأساسية، ويتم التحقق من التنزيل، قم بتثبيت نظام بنية CMake. انتبه أيضًا إلى أن الإصدارات الأقدم من نظام بنية CMake تفشل في إنشاء ملف الحل المستخدم في هذه المقالة. تأكد من استخدام أحدث إصدار من CMake.

  2. افتح مستعرض ويب، ثم انتقل إلى صفحة الإصدار من SDK Azure IoT C.

  3. حدد علامة التبويب علامات في الجزء العلوي من الصفحة.

  4. انسخ اسم العلامة لأحدث إصدار من Azure IoT C SDK.

  5. افتح موجه الأوامر أو Git Bash shell. قم بتشغيل الأوامر التالية لاستنساخ أحدث إصدار من Azure IoT Device SDK لمستودع C GitHub. استبدل <release-tag> بالعلامة التي نسختها في الخطوة السابقة، على سبيل المثال: 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
    

    توقع أن تستغرق هذه العملية عدة دقائق لإكمالها.

  6. عند اكتمال العملية، قم بتشغيل الأوامر التالية من دليل azure-iot-sdk-c:

    mkdir cmake
    cd cmake
    
  1. افتح بيئة سطر أوامر Git CMD أو Git Bash.

  2. استنساخ مستودع Azure IoT SDK ل C#‎ GitHub باستخدام الأمر التالي:

    git clone https://github.com/Azure/azure-iot-sdk-csharp.git
    
  1. افتح بيئة سطر أوامر Git CMD أو Git Bash.

  2. انسخ مستودع GitHub azure-utpm-c باستخدام الأمر التالي:

    git clone https://github.com/Azure/azure-utpm-c.git --recursive
    
  1. افتح بيئة سطر أوامر Git CMD أو Git Bash.

  2. انسخ مستودع GitHub Java باستخدام الأمر التالي:

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

إنشاء وتشغيل جهاز محاكاة TPM

في هذا القسم، ستقوم بإنشاء وتشغيل محاكي TPM. يستمع هذا المحاكي عبر مأخذ توصيل على المنافذ 2321 و2322. لا تغلق نافذة الأوامر. ستحتاج إلى استمرار تشغيل هذا المحاكي حتى نهاية التشغيل السريع هذا.

  1. شغّل الأمر التالي لإنشاء Azure IoT C SDK الذي يتضمن نموذج التعليمات البرمجية لمحاكي جهاز TPM. يتم إنشاء حل Visual Studio للجهاز المحاكي في cmake الدليل. يوفر هذا النموذج آلية مصادقة TPM عبر مصادقة الرمز المميز لتوقيع الوصول المشترك (SAS).

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

    تلميح

    إذا لم يعثر cmakeعلى برنامج التحويل البرمجي C ++، فقد تحصل على أخطاء في الإنشاء في أثناء تشغيل الأمر أعلاه. إذا حدث ذلك، فحاول تشغيل الأمر في موجه الأوامر Visual Studio.

  2. عند نجاح البناء، تبدو أسطر الإخراج القليلة الأخيرة مشابهة للإخراج التالي:

    $ 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. انتقل إلى المجلد الجذر لمستودع git الذي نسخته.

  4. شغّل محاكي TPM باستخدام المسار الموضح أدناه.

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

    لا يعرض المحاكي أي إخراج. دعه يستمر في العمل لأنه يحاكي جهاز TPM.

  1. انتقل إلى المجلد الجذر GitHub.

  2. تشغيل محاكي TPM ليكون HSMللجهاز الذي تمت محاكاته.

    .\azure-utpm-c\tools\tpm_simulator\Simulator.exe
    
  3. إنشاء مجلد فارغ جديد يسمى registerdevice. في المجلد registerdevice، أنشئ ملف package.json باستخدام الأمر التالي في موجه الأوامر (تأكد من الإجابة على جميع الأسئلة الواردة من npm أو قبول الإعدادات الافتراضية إذا كانت تناسبك):

    npm init
    
  4. تثبيت حزم السلائف التالية:

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

    إشعار

    هناك بعض المشكلات المعروفة لتثبيت الحزم أعلاه. لحل هذه المشكلات، قم بتشغيل npm install --global --production windows-build-tools باستخدام موجه أوامر في وضع التشغيل كمسؤول ، ثم قم بتشغيل SET VCTargetsPath=C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140 بعد استبدال المسار بالإصدار المثبت، ثم أعد تشغيل أوامر التثبيت أعلاه.

  5. بادر بتثبيت جميع الحزم المطلوبة بتشغيل الأمر التالي في موجه الأوامر الخاص بك في مجلد registerdevice:

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

    يثبت الأمر الحزم التالية:

    • عميل أمان يعمل مع TPM: azure-iot-security-tpm

    • نقل الجهاز للاتصال بخدمة توفير الأجهزة: إما azure-iot-provisioning-device-http أو azure-iot-provisioning-device-amqp

    • عميل لاستخدام عميل النقل والأمان: azure-iot-provisioning-device

    • عميل الجهاز: azure-iot-device

    • النقل: أي من azure-iot-device-amqpأو azure-iot-device-mqttأو azure-iot-device-http

    • عميل الأمان الذي قمت بتثبيته بالفعل: azure-iot-security-tpm

      إشعار

      تستخدم العينات الموجودة في هذا التشغيل السريع azure-iot-provisioning-device-http ووسائل نقل azure-iot-device-mqtt.

  6. افتح محرر نصوص من اختياراتك.

  7. في المجلد registerdevice، بادر بإنشاء ملف ExtractDevice.js جديد.

  8. أضف العبارات التالية require في بداية ملف 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. قم بإضافة الوظيفة التالية لتنفيذ الأسلوب:

    
    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. احفظ الملف ExtractDevice.js وأغلقه.

    node ExtractDevice.js
    
  11. قم بتشغيل العينة.

  12. تعرض نافذة الإخراج مفتاح المصادقة ومعرف التسجيل المطلوب لتسجيل الجهاز. انسخ هذه القيم.

  1. تشغيل محاكي TPM ليكون HSMللجهاز الذي تمت محاكاته.

  2. حدد Allow Access. يستمع المحاكي عبر مأخذ توصيل على المنافذ 2321 و2322. لا تغلق نافذة الأوامر هذه؛ تحتاج إلى إبقاء هذا المحاكي قيد التشغيل حتى نهاية دليل التشغيل السريع هذا.

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

    TPM Simulator

  3. افتح موجه أوامر ثاني.

  4. في موجه أوامر ثاني، انتقل إلى المجلد الجذر وقم ببناء نموذج التبعيات.

    cd azure-iot-sdk-java
    mvn install -DskipTests=true
    
  5. انتقل إلى مجلد العينة.

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

قراءة مفاتيح التشفير من جهاز TPM

في هذا القسم، ستقوم بإنشاء وتنفيذ نموذج يقرأ مفتاح المصادقة ومعرف التسجيل من جهاز محاكاة TPM الذي تركته قيد التشغيل، ولا يزال يستمع عبر المنفذين 2321 و2322. سيتم استخدام هذه القيم لتسجيل الجهاز مع مثيل خدمة توفير الجهاز.

  1. قم بتشغيل Visual Studio.

  2. افتح الحل الذي تم إنشاؤه في مجلد cmake المسمىazure_iot_sdks.sln.

  3. في القائمة Visual Studio حدد Build>Build Solution لإنشاء كافة المشاريع في الحل.

  4. في نافذة مستكشف الحلول Visual Studio، انتقل إلى مجلد Provision_Tools. انقر بزر الماوس الأيمن فوق ملف مشروع tpm_device_provision وحدد⁩Set as Startup Project⁦.

  5. في القائمة Visual Studio حدد Debug> البدء من دون تصحيح الأخطاء لتشغيل الحل. يقرأ التطبيق ويعرض معرف التسجيلومفتاح المصادقة. لاحظ أو انسخ هذه القيم. ستُستخدم في القسم التالي لتسجيل الجهاز.

  1. سجّل الدخول إلى مدخل Azure، وحدد زر جميع الموارد من القائمة اليسرى، وافتح خدمة Device Provisioning Service الخاص بك. تدوين نطاق المعرف الخاص بك ونقطة النهاية العالمية لخدمة توفير الخدمة.

    Device Provisioning Service information

  2. تحريرsrc/main/java/samples/com/microsoft/azure/sdk/iot/ProvisioningTpmSample.javaالملف، لتضمين نطاقID Scope وخدمة توفير نقطة النهاية العمومية كما هو موضح سابقًا.

    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. حفظ الملف.

  4. استخدم الأوامر التالية لإنشاء المشروع، والانتقال إلى المجلد الهدف، وتنفيذ ملف .jar الذي تم إنشاؤه (استبدل {version} بإصدار Java الخاص بك):

    mvn clean install
    cd target
    java -jar ./provisioning-tpm-sample-{version}-with-deps.jar
    
  5. عند بدء تشغيل البرنامج، سيعرض مفتاح المصادقة ومعرف التسجيل. انسخ هذه القيم للقسم التالي. تأكد من ترك البرنامج قيد التشغيل.

في هذا القسم، ستقوم بإنشاء وتنفيذ عينة تقرأ مفتاح المصادقة من وحدة أمان الأجهزة TPM 2.0. سيتم استخدام هذه القيمة لتسجيل الجهاز مع مثيل خدمة تزويد الأجهزة.

  1. في موجه الأوامر، تغيير الدلائل إلى دليل المشروع لعينة توفير جهاز TPM.

    cd '.\azure-iot-sdk-csharp\provisioning\device\samples\how to guides\TpmSample\'
    
  2. اكتب الأمر التالي لإنشاء نموذج توفير جهاز TPM وتشغيله. انسخ مفتاح المصادقة الذي تم إرجاعه من وحدة أمان الأجهزة TPM 2.0 لاستخدامها لاحقا عند تسجيل جهازك.

    dotnet run -- -e
    

إنشاء إدخال تسجيل الجهاز

  1. سجل الدخول إلى مدخل Microsoft Azure وانتقل إلى مثيل خدمة تزويد الأجهزة.

  2. حدد إدارة التسجيلات من قسم الإعدادات من قائمة التنقل.

  3. حدد علامة التبويب التسجيلات الفردية، ثم حدد إضافة تسجيل فردي.

    Screenshot that shows the add individual enrollment option.

  4. في صفحة Registration + provisioning لصفحة Add enrollment ، قم بتوفير المعلومات التالية لتكوين تفاصيل التسجيل:

    الحقل ‏‏الوصف
    شهاده حدد Trusted Platform Module (TPM) كآلية التصديق.
    إعدادات الوحدة النمطية للنظام الأساسي الموثوق به (TPM) قم بتوفير مفتاح المصادقة الذي سيتم استخدامه للتحقق من الجهاز لهذا التسجيل. يمكنك استرداد مفتاح المصادقة من TPM الخاص بجهازك.
    معرف التسجيل توفير معرف التسجيل الفريد للجهاز. يمكنك استرداد معرف التسجيل من TPM الخاص بجهازك.
    حالة التوفير حدد المربع تمكين هذا التسجيل إذا كنت تريد أن يكون هذا التسجيل متوفرا لتوفير جهازه. قم بإلغاء تحديد هذا المربع إذا كنت تريد تعطيل التسجيل. يمكنك تغيير هذا الإعداد لاحقا.
    نهج إعادة التزويد اختر نهج إعادة توفير يعكس الطريقة التي تريد أن تتعامل بها DPS مع الأجهزة التي تطلب إعادة التزويد. لمزيد من المعلومات، راجع نهج إعادة التوفير.
  5. حدد Next: IoT hubs.

  6. في علامة التبويب IoT hubs في صفحة Add enrollment ، قم بتوفير المعلومات التالية لتحديد مراكز IoT التي يمكن للتسجيل توفير الأجهزة إليها:

    الحقل ‏‏الوصف
    مراكز IoT المستهدفة حدد واحدا أو أكثر من مراكز IoT المرتبطة، أو أضف ارتباطا جديدا إلى مركز IoT. لمعرفة المزيد حول ربط مراكز IoT بمثيل DPS، راجع كيفية ربط مراكز IoT وإدارتها.
    نهج التخصيص إذا حددت أكثر من مركز IoT مرتبط واحد، فحدد الطريقة التي تريد بها تعيين الأجهزة إلى المراكز المختلفة. لمعرفة المزيد حول نهج التخصيص، راجع كيفية استخدام نهج التخصيص.

    إذا حددت مركز IoT مرتبطا واحدا فقط، نوصي باستخدام نهج التوزيع المرجح بالتساوي.
  7. حدد Next: Device settings

  8. في علامة التبويب Device settings في صفحة Add enrollment ، قم بتوفير المعلومات التالية لتحديد كيفية تكوين الأجهزة التي تم توفيرها حديثا:

    الحقل ‏‏الوصف
    معرف الجهاز قم بتوفير معرف الجهاز الذي سيتم تعيينه إلى الجهاز المقدم في IoT Hub. إذا لم توفر معرف جهاز، فسيتم استخدام معرف التسجيل.
    IoT Edge تحقق من تمكين IoT Edge على الأجهزة المتوفرة إذا كان الجهاز المقدم سيشغل Azure IoT Edge. قم بإلغاء تحديد هذا المربع إذا كان هذا التسجيل لجهاز غير ممكن ل IoT Edge.
    علامات الجهاز استخدم مربع النص هذا لتوفير أي علامات تريد تطبيقها على توأم الجهاز للجهاز الذي تم توفيره.
    الخصائص المطلوبة استخدم مربع النص هذا لتوفير أي خصائص مطلوبة تريد تطبيقها على توأم الجهاز للجهاز الذي تم توفيره.

    لمزيد من المعلومات، راجع فهم واستخدام الجهاز المزدوج في IoT Hub.

  9. حدّد Next: Review + create.

  10. في علامة التبويب Review + create ، تحقق من جميع القيم الخاصة بك ثم حدد Create.

لا يوفر نموذج C# TPM لهذا التشغيل السريع معرف تسجيل. عند مطالبتك بإضافة واحد للتسجيل الفردي، قم بتوفير القيمة الخاصة بك.

  1. سجل الدخول إلى مدخل Microsoft Azure وانتقل إلى مثيل خدمة تزويد الأجهزة.

  2. حدد إدارة التسجيلات من قسم الإعدادات من قائمة التنقل.

  3. حدد علامة التبويب التسجيلات الفردية، ثم حدد إضافة تسجيل فردي.

    Screenshot that shows the add individual enrollment option.

  4. في صفحة Registration + provisioning لصفحة Add enrollment ، قم بتوفير المعلومات التالية لتكوين تفاصيل التسجيل:

    الحقل ‏‏الوصف
    شهاده حدد Trusted Platform Module (TPM) كآلية التصديق.
    إعدادات الوحدة النمطية للنظام الأساسي الموثوق به (TPM) قم بتوفير مفتاح المصادقة الذي سيتم استخدامه للتحقق من الجهاز لهذا التسجيل. يمكنك استرداد مفتاح المصادقة من TPM الخاص بجهازك.
    معرف التسجيل توفير معرف التسجيل الفريد للجهاز. يمكنك استرداد معرف التسجيل من TPM الخاص بجهازك.
    حالة التوفير حدد المربع تمكين هذا التسجيل إذا كنت تريد أن يكون هذا التسجيل متوفرا لتوفير جهازه. قم بإلغاء تحديد هذا المربع إذا كنت تريد تعطيل التسجيل. يمكنك تغيير هذا الإعداد لاحقا.
    نهج إعادة التزويد اختر نهج إعادة توفير يعكس الطريقة التي تريد أن تتعامل بها DPS مع الأجهزة التي تطلب إعادة التزويد. لمزيد من المعلومات، راجع نهج إعادة التوفير.
  5. حدد Next: IoT hubs.

  6. في علامة التبويب IoT hubs في صفحة Add enrollment ، قم بتوفير المعلومات التالية لتحديد مراكز IoT التي يمكن للتسجيل توفير الأجهزة إليها:

    الحقل ‏‏الوصف
    مراكز IoT المستهدفة حدد واحدا أو أكثر من مراكز IoT المرتبطة، أو أضف ارتباطا جديدا إلى مركز IoT. لمعرفة المزيد حول ربط مراكز IoT بمثيل DPS، راجع كيفية ربط مراكز IoT وإدارتها.
    نهج التخصيص إذا حددت أكثر من مركز IoT مرتبط واحد، فحدد الطريقة التي تريد بها تعيين الأجهزة إلى المراكز المختلفة. لمعرفة المزيد حول نهج التخصيص، راجع كيفية استخدام نهج التخصيص.

    إذا حددت مركز IoT مرتبطا واحدا فقط، نوصي باستخدام نهج التوزيع المرجح بالتساوي.
  7. حدد Next: Device settings

  8. في علامة التبويب Device settings في صفحة Add enrollment ، قم بتوفير المعلومات التالية لتحديد كيفية تكوين الأجهزة التي تم توفيرها حديثا:

    الحقل ‏‏الوصف
    معرف الجهاز قم بتوفير معرف الجهاز الذي سيتم تعيينه إلى الجهاز المقدم في IoT Hub. إذا لم توفر معرف جهاز، فسيتم استخدام معرف التسجيل.
    IoT Edge تحقق من تمكين IoT Edge على الأجهزة المتوفرة إذا كان الجهاز المقدم سيشغل Azure IoT Edge. قم بإلغاء تحديد هذا المربع إذا كان هذا التسجيل لجهاز غير ممكن ل IoT Edge.
    علامات الجهاز استخدم مربع النص هذا لتوفير أي علامات تريد تطبيقها على توأم الجهاز للجهاز الذي تم توفيره.
    الخصائص المطلوبة استخدم مربع النص هذا لتوفير أي خصائص مطلوبة تريد تطبيقها على توأم الجهاز للجهاز الذي تم توفيره.

    لمزيد من المعلومات، راجع فهم واستخدام الجهاز المزدوج في IoT Hub.

  9. حدّد Next: Review + create.

  10. في علامة التبويب Review + create ، تحقق من جميع القيم الخاصة بك ثم حدد Create.

تسجيل الجهاز

في هذا القسم، سيتم تكوين نموذج التعليمات البرمجية لاستخدام Advanced Message Queuing Protocol (AMQP) لإرسال تسلسل تمهيد الجهاز إلى مثيل خدمة توفير الجهاز. يؤدي تسلسل التمهيد هذا إلى تسجيل الجهاز في لوحة وصل IoT مرتبطة بمثيل خدمة توفير الجهاز.

  1. في مدخل Azure، حدد علامة تبويب Overview لخدمة تكوين إعدادات تشغيل الجهاز لديك.

  2. انسخ قيمة ID Scope.

    Extract Device Provisioning Service endpoint information from the portal

  3. في نافذة مستكشف الحلول Visual Studio، انتقل إلى مجلد Provision_Samples. قم بتوسيع نموذج المشروع المسمى prov_dev_client_sample. قم بتوسيع ملفات المصدر، وافتح prov_dev_client_sample.c.

  4. بالقرب من أعلى الملف، ابحث #defineعن عبارات كل بروتوكول جهاز كما هو موضح أدناه. تأكد من SAMPLE_AMQP عدم التعليق فقط.

    حاليا، بروتوكول MQTT غير مدعوم للتسجيل الفردي ل 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. ابحث عن id_scope الثابت، واستبدل القيمة بقيمة نطاق معرفك التي قمت بنسخها سابقاً.

    static const char* id_scope = "0ne00002193";
    
  6. ابحث عن تعريف الدالة main() في نفس الملف. تأكد من تعيين hsm_typeالمتغير علىSECURE_DEVICE_TYPE_TPM كما هو موضح أدناه.

    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. انقر بزر الماوس الأيمن فوق مشروع prov_dev_client_sample وحدد تعيين كمشروع بدء التشغيل.

  8. في القائمة Visual Studio حدد Debug> البدء من دون تصحيح الأخطاء لتشغيل الحل. في المطالبة بإعادة إنشاء المشروع، حدد Yes لإعادة إنشاء المشروع قبل تشغيله.

    الإخراج التالي هو مثال على نموذج عميل جهاز التزويد بنجاح التمهيد والاتصال بمثيل خدمة توفير الجهاز للحصول على معلومات محور 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. في مدخل Azure، حدد علامة تبويب Overview لخدمة تكوين إعدادات تشغيل الجهاز لديك.

  2. انسخ قيمة ID Scope.

    Copy provisioning service Scope ID from the portal blade

  3. في موجه الأوامر، تغيير الدلائل إلى دليل المشروع لعينة توفير جهاز TPM.

     cd '.\azure-iot-sdk-csharp\provisioning\device\samples\how to guides\TpmSample\'
    
  4. قم بتشغيل الأمر التالي لتسجيل جهازك. استبدل <IdScope> بقيمة DPS التي نسختها وبالقيمة <RegistrationId> التي استخدمتها عند إنشاء تسجيل الجهاز.

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

    إذا كان تسجيل الجهاز ناجحا، فسترى الرسائل التالية:

    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. في مدخل Azure، حدد علامة تبويب Overview لخدمة تكوين إعدادات تشغيل الجهاز لديك.

  2. انسخ قيمة ID Scope.

    Extract Device Provisioning Service endpoint information from the portal blade

  3. افتح محرر نصوص من اختيارك.

  4. في المجلد registerdevice، بادر بإنشاء ملف RegisterDevice.js جديد.

  5. قم بإضافة العبارات التالية require في بداية ملف 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;
    

    إشعار

    يدعم Azure IoT SDK for Node.js بروتوكولات إضافية مثل AMQP وAMQP WS وMQTT WS. لمزيد من الأمثلة، راجع Device Provisioning Service SDK للحصول على عينات Node.js.

  6. أضف متغيرات globalDeviceEndpoint وidScope واستخدمها لإنشاء مثيل ProvisioningDeviceClient. استبدل {globalDeviceEndpoint} و{idScope} بقيم Global Device Endpoint وID Scope من الخطوة 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. قم بإضافة الدالة التالية لتطبيق الأسلوب على الجهاز:

    
    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. احفظ الملف RegisterDevice.js وأغلقه.

  9. شغّل الأمر التالي:

    node RegisterDevice.js
    
  10. يرجى ملاحظة الرسائل التي تحاكي تمهيد الجهاز والاتصال بخدمة توفير الجهاز للحصول على معلومات مركز IoT.

  1. في إطار الأمر الذي يقوم بتشغيل نموذج التعليمات البرمجية Java على جهازك، اضغط على Enter لمتابعة تشغيل التطبيق. يرجى ملاحظة الرسائل التي تحاكي تمهيد الجهاز والاتصال بخدمة توفير الجهاز للحصول على معلومات مركز IoT.

    Java TPM device program final

تأكد من تسجيل توفير جهازك

  1. قم بتسجيل الدخول إلى بوابة Azure.

  2. في القائمة اليسرى أو في صفحة المدخل، حدد جميع الموارد.

  3. حدد مركز إنترنت الأشياء الذي تم تخصيص جهازك إليه.

  4. في قائمة Explorers، حدد IoT Devices.

  1. إذا تم توفير جهازك بنجاح، فيجب أن يظهر معرف الجهاز في القائمة، مع تعيين Status على أنه enabled. إذا كنت لا ترى جهازك، فحدد Refresh في الجزء العلوي من الصفحة.

    Device is registered with the IoT hub for C

  1. إذا تم توفير جهازك بنجاح، فيجب أن يظهر معرف الجهاز في القائمة، مع تعيين Status على أنه enabled. إذا كنت لا ترى جهازك، فحدد Refresh في الجزء العلوي من الصفحة.

    Device is registered with the IoT hub for C#

  1. إذا تم توفير جهازك بنجاح، فيجب أن يظهر معرف الجهاز في القائمة، مع تعيين Status على أنه enabled. إذا كنت لا ترى جهازك، فحدد Refresh في الجزء العلوي من الصفحة.

    Device is registered with the IoT hub for Node.js

  1. إذا تم توفير جهازك بنجاح، فيجب أن يظهر معرف الجهاز في القائمة، مع تعيين Status على أنه enabled. إذا كنت لا ترى جهازك، فحدد Refresh في الجزء العلوي من الصفحة.

    Device is registered with the IoT hub

إشعار

إذا غيّرت حالة الجهاز التوأم الأولية من القيمة الافتراضية في إدخال التسجيل لجهازك، يمكنها سحب الحالة التوأم المطلوبة من المركز والتصرف وفقًا لذلك. لمزيد من المعلومات، راجع فهم واستخدام الجهاز المزدوج في IoT Hub.

تنظيف الموارد

إذا كنت تخطط لمتابعة العمل على نموذج عميل الجهاز واستكشافه، فلا تنظف الموارد التي تم إنشاؤها في هذه البداية السريعة. إذا لم تكن تخطط للمتابعة، فاستخدم الخطوات التالية لحذف جميع الموارد التي تم إنشاؤها بواسطة هذه البداية السريعة.

احذف تسجيل جهازك

  1. أغلق نموذج إطار إخراج نموذج الجهاز على الجهاز.

  2. في مدخل Azure، حدد All resources في القائمة اليسرى.

  3. تحديد خدمة تزويد الأجهزة خاصتك.

  4. في قائمة الإعدادات، حدد ⁧⁩"إدارة التسجيلات"⁧⁩.

  5. حدد علامة التبويب التسجيلات الفردية.

  6. حدد خانة الاختيار بجوار معرف التسجيل للجهاز الذي سجلته في هذا التشغيل السريع.

  7. في الجزء العلوي من الصفحة، حدد حذف.

احذف تسجيل جهازك من مركز IoT

  1. في مدخل Azure، حدد All resources في القائمة اليسرى.

  2. حدد مركز IoT.

  3. في قائمة Explorers، حدد IoT devices.

  4. حدد خانة الاختيار بجوار معرف الجهاز الخاص بالجهاز الذي سجلته في هذا التشغيل السريع.

  5. في الجزء العلوي من الصفحة، حدد حذف.

الخطوات التالية

في هذا التشغيل السريع، قمت بتوفير جهاز واحد لمركز IoT الخاص بك باستخدام تسجيل فردي. بعد ذلك، تعرف على كيفية توفير أجهزة متعددة عبر مراكز متعددة.