Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Back-endové aplikace mohou používat primitiva služby Azure IoT Hub, jako jsou dvojčata zařízení a přímé metody, ke vzdálenému spouštění a monitorování akcí správy zařízení na zařízeních.
Pomocí přímé metody z back-endové aplikace zahajte akce správy zařízení, jako je restartování, obnovení továrního nastavení a aktualizace firmwaru.
Zařízení zodpovídá za:
- Zpracování požadavku přímé metody odeslaného ze služby IoT Hub
- Zahájení odpovídající akce specifické pro zařízení na daném zařízení.
- Poskytování aktualizací stavu prostřednictvím ohlášených vlastností do IoT Hubu
V tomto článku se dozvíte, jak může back-endová aplikace a aplikace zařízení spolupracovat na zahájení a monitorování akce vzdáleného zařízení pomocí přímé metody.
- Aplikace služby volá přímou metodu restartování v aplikaci zařízení prostřednictvím centra IoT.
- Aplikace zařízení zpracovává přímou metodu restartování zařízení.
Poznámka:
Funkce popsané v tomto článku jsou k dispozici pouze na úrovni Standard služby IoT Hub. Další informace o úrovních Basic a Standard/Free IoT Hub najdete v tématu Volba správné úrovně a velikosti služby IoT Hub pro vaše řešení.
Poznámka:
Tento článek je určen k doplnění ukázkových příkladů SDK pro Azure IoT, na které se v něm odkazuje. Nástroje sady SDK můžete použít k sestavení zařízení i back-endových aplikací.
Požadavky
IoT uzel
Zaregistrované zařízení
Pokud vaše aplikace používá protokol MQTT, ujistěte se, že je v bráně firewall otevřený port 8883. Protokol MQTT komunikuje přes port 8883. Tento port může být blokovaný v některých podnikových a vzdělávacích síťových prostředích. Další informace a způsoby řešení tohoto problému najdete v tématu Připojení ke službě IoT Hub (MQTT).
- Vyžaduje Visual Studio.
Přehled
Tento článek popisuje, jak pomocí sady Azure IoT SDK pro .NET vytvořit aplikační kód pro zařízení a back-endovou službu, který zajišťuje přímé zprávy zařízení.
Vytvoření aplikace zařízení
Tato část popisuje, jak pomocí kódu aplikace zařízení vytvořit zpětně volající posluchač pro přímou metodu.
Požadované balíčky NuGet pro zařízení
Klientské aplikace zařízení napsané v jazyce C# vyžadují balíček NuGet Microsoft.Azure.Devices.Client .
Přidejte tyto using příkazy pro použití knihovny zařízení.
using Microsoft.Azure.Devices.Client;
using Microsoft.Azure.Devices.Shared;
Připojení zařízení ke službě IoT Hub
Aplikace zařízení se může ověřit ve službě IoT Hub pomocí následujících metod:
- Sdílený přístupový klíč
- Certifikát X.509
Důležité
Tento článek obsahuje postup připojení zařízení pomocí sdíleného přístupového podpisu, označovaného také jako ověřování symetrického klíče. Tato metoda ověřování je vhodná pro testování a vyhodnocení, ale ověřování zařízení pomocí certifikátů X.509 je bezpečnější přístup. Další informace najdete v tématu Osvědčené postupy zabezpečení pro zabezpečení připojení řešení > IoT.
Ověřování pomocí sdíleného přístupového klíče
Třída DeviceClient zveřejňuje všechny metody potřebné k interakci se zprávami zařízení ze zařízení.
Připojte se k zařízení pomocí metody CreateFromConnectionString spolu s připojovací řetězec zařízení a protokolem přenosu připojení.
Parametr CreateFromConnectionStringtransportních protokolů TransportType podporuje následující přenosové protokoly:
MqttMqtt_WebSocket_OnlyMqtt_Tcp_OnlyAmqpAmqp_WebSocket_OnlyAmqp_Tcp_OnlyHttp1
Tento příklad se připojí k zařízení pomocí přenosového Mqtt protokolu.
static string DeviceConnectionString = "{IoT hub device connection string}";
static deviceClient = null;
deviceClient = DeviceClient.CreateFromConnectionString(DeviceConnectionString,
TransportType.Mqtt);
Ověřování pomocí certifikátu X.509
Připojení zařízení ke službě IoT Hub pomocí certifikátu X.509:
Pomocí DeviceAuthenticationWithX509Certificate vytvořte objekt, který obsahuje informace o zařízení a certifikátu.
DeviceAuthenticationWithX509Certificateje předán jako druhý parametr doDeviceClient.Create(krok 2).Pomocí DeviceClient.Create připojte zařízení ke službě IoT Hub pomocí certifikátu X.509.
V tomto příkladu jsou informace o zařízení a certifikátu vyplněny v objektu authDeviceAuthenticationWithX509Certificate , který je předán DeviceClient.Create.
Tento příklad ukazuje hodnoty vstupních parametrů certifikátu jako místní proměnné pro přehlednost. V produkčním systému uložte citlivé vstupní parametry do proměnných prostředí nebo do jiného bezpečnějšího umístění úložiště. Použijte Environment.GetEnvironmentVariable("HOSTNAME") například ke čtení proměnné prostředí s názvem hostitele.
RootCertPath = "~/certificates/certs/sensor-thl-001-device.cert.pem";
Intermediate1CertPath = "~/certificates/certs/sensor-thl-001-device.intermediate1.cert.pem";
Intermediate2CertPath = "~/certificates/certs/sensor-thl-001-device.intermediate2.cert.pem";
DevicePfxPath = "~/certificates/certs/sensor-thl-001-device.cert.pfx";
DevicePfxPassword = "1234";
DeviceName = "MyDevice";
HostName = "xxxxx.azure-devices.net";
var chainCerts = new X509Certificate2Collection();
chainCerts.Add(new X509Certificate2(RootCertPath));
chainCerts.Add(new X509Certificate2(Intermediate1CertPath));
chainCerts.Add(new X509Certificate2(Intermediate2CertPath));
using var deviceCert = new X509Certificate2(DevicePfxPath, DevicePfxPassword);
using var auth = new DeviceAuthenticationWithX509Certificate(DeviceName, deviceCert, chainCerts);
using var deviceClient = DeviceClient.Create(
HostName,
auth,
TransportType.Amqp);
Další informace o ověřování certifikátů najdete tady:
Ukázky kódu
Pracovní ukázky ověřování certifikátů X.509 zařízení najdete tady:
- Připojení pomocí certifikátu X.509
- DeviceClientX509AuthenticationE2ETests
- Projekt s asistencí – Zabezpečené a škálovatelné zřizování zařízení IoT pomocí služby IoT Hub Device Provisioning
Vytvořit naslouchací modul pro přímou metodu
K inicializaci naslouchání zpětného volání přímé metody použijte SetMethodHandlerAsync. Posluchač je přiřazený ke klíčovému slovu názvu metody, například "reboot". Název metody lze použít ve službě IoT Hub nebo back-endové aplikaci k aktivaci metody zpětného volání v zařízení.
Tento příklad nastaví naslouchací proces zpětného volání s názvem onReboot, který se aktivuje, když je volána přímá metoda "reboot".
try
{
// setup callback for "reboot" method
deviceClient.SetMethodHandlerAsync("reboot", onReboot, null).Wait();
Console.WriteLine("Waiting for reboot method\n Press enter to exit.");
Console.ReadLine();
Console.WriteLine("Exiting...");
// as a good practice, remove the "reboot" handler
deviceClient.SetMethodHandlerAsync("reboot", null, null).Wait();
deviceClient.CloseAsync().Wait();
}
catch (Exception ex)
{
Console.WriteLine();
Console.WriteLine("Error in sample: {0}", ex.Message);
}
Pokračujme v příkladu, metoda zpětného volání onReboot implementuje přímou metodu na zařízení.
Funkce obslužné rutiny volá MethodResponse k odeslání potvrzení odpovědi volající aplikaci.
static Task<MethodResponse> onReboot(MethodRequest methodRequest, object userContext)
{
// In a production device, you would trigger a reboot
// scheduled to start after this method returns.
// For this sample, we simulate the reboot by writing to the console
// and updating the reported properties.
try
{
Console.WriteLine("Rebooting!");
}
catch (Exception ex)
{
Console.WriteLine();
Console.WriteLine("Error in sample: {0}", ex.Message);
}
string result = @"{""result"":""Reboot started.""}";
return Task.FromResult(new MethodResponse(Encoding.UTF8.GetBytes(result), 200));
}
Poznámka:
Aby bylo všechno jednoduché, tento článek neimplementuje žádné zásady opakování. V produkčním kódu byste měli implementovat zásady opakování (například exponenciální zpoždování), jak je navrženo při zpracování přechodných chyb.
Ukázky zařízení sady SDK
Sada Azure IoT SDK pro .NET poskytuje funkční ukázky aplikací zařízení, které zpracovávají úlohy přímých metod. Další informace naleznete v tématu:
Vytvoření back-endové aplikace
Tato část popisuje, jak aktivovat přímou metodu na zařízení.
Třída ServiceClient zveřejňuje všechny metody potřebné k vytvoření back-endové aplikace pro odesílání volání přímých metod do zařízení.
Požadovaný servisní balíček NuGet
Aplikace back-endových služeb vyžadují balíček NuGet Microsoft.Azure.Devices .
Přidejte tyto using příkazy pro použití knihovny služeb.
using Microsoft.Azure.Devices;
using Microsoft.Azure.Devices.Shared;
Připojení ke službě IoT Hub
Back-endovou službu můžete ke službě IoT Hub připojit pomocí následujících metod:
- Zásady sdíleného přístupu
- Microsoft Entra
Důležité
Tento článek obsahuje postup připojení ke službě pomocí sdíleného přístupového podpisu. Tato metoda ověřování je vhodná pro testování a vyhodnocení, ale ověřování ve službě pomocí MICROSOFT Entra ID nebo spravovaných identit je bezpečnější přístup. Další informace najdete v tématu Osvědčené postupy zabezpečení zabezpečení řešení > IoT v cloudu.
Připojení pomocí zásad sdíleného přístupu
Připojte back-endovou aplikaci pomocí createFromConnectionString.
K vyvolání přímé metody na zařízení prostřednictvím IoT Hubu potřebuje vaše služba oprávnění k připojení ke službě. Ve výchozím nastavení se každá služba IoT Hub vytvoří pomocí zásady sdíleného přístupu s názvem služby , která toto oprávnění uděluje.
Jako parametr CreateFromConnectionStringzadejte zásady sdíleného přístupu služby . Další informace o zásadách sdíleného přístupu najdete v tématu Řízení přístupu ke službě IoT Hub pomocí sdílených přístupových podpisů.
ServiceClient serviceClient;
string connectionString = "{IoT hub service shared access policy connection string}";
serviceClient = ServiceClient.CreateFromConnectionString(connectionString);
Připojení pomocí Microsoft Entra
Back-endová aplikace, která používá Microsoft Entra, se musí před připojením ke službě IoT Hub úspěšně ověřit a získat přihlašovací údaje tokenu zabezpečení. Tento token je předán metodě připojení IoT Hubu. Obecné informace o nastavení a používání Microsoft Entra pro IoT Hub naleznete v tématu Řízení přístupu ke službě IoT Hub pomocí Microsoft Entra ID.
Konfigurace aplikace Microsoft Entra
Musíte nastavit aplikaci Microsoft Entra, která je nakonfigurovaná pro vaše upřednostňované přihlašovací údaje ověřování. Aplikace obsahuje parametry, jako je tajný klíč klienta, který používá back-endová aplikace k ověření. Dostupné konfigurace ověřování aplikací:
- Tajný kód klienta
- Certifikát
- Údaje o federované identitě
Aplikace Microsoft Entra mohou v závislosti na provedených operacích vyžadovat určitá oprávnění role. K povolení přístupu ke čtení a zápisu k zařízení a modulovým dvojčatům služby IoT Hub je například vyžadován IoT Hub Twin Contributor. Další informace najdete v tématu Řízení přístupu k IoT Hubu s využitím přiřazení rolí Azure RBAC.
Další informace o nastavení aplikace Microsoft Entra najdete v tématu Rychlý start: Registrace aplikace na platformě Microsoft Identity Platform.
Ověřování pomocí DefaultAzureCredential
Nejjednodušší způsob, jak použít Microsoft Entra pro autentizaci backend aplikace, je využít DefaultAzureCredential. Nicméně, v produkčním prostředí se doporučuje využít jiný způsob, včetně specifického TokenCredential nebo zjednodušené verze ChainedTokenCredential. Pro zjednodušení popisuje tato část ověřování pomocí DefaultAzureCredential a tajný klíč klienta. Další informace o výhodách a nevýhodách použití naleznete v pokynech k použití DefaultAzureCredentialpro DefaultAzureCredential.
DefaultAzureCredential podporuje různé mechanismy ověřování a určuje odpovídající typ přihlašovacích údajů na základě prostředí, ve které se provádí. Pokusí se použít více typů přihlašovacích údajů v pořadí, dokud nenajde funkční přihlašovací údaje.
Microsoft Entra vyžaduje tyto balíčky NuGet a odpovídající using příkazy:
- Azure.Core
- Azure.Identity
using Azure.Core;
using Azure.Identity;
V tomto příkladu se do proměnných prostředí přidají tajný klíč klienta, ID klienta a ID tenanta z registrace aplikace Microsoft Entra. Tyto proměnné prostředí používá DefaultAzureCredential k autentizaci aplikace. Výsledkem úspěšného ověřování Microsoft Entra je zabezpečený tokenový přihlašovací údaj, který je předán do metody připojení IoT Hubu.
string clientSecretValue = "xxxxxxxxxxxxxxx";
string clientID = "xxxxxxxxxxxxxx";
string tenantID = "xxxxxxxxxxxxx";
Environment.SetEnvironmentVariable("AZURE_CLIENT_SECRET", clientSecretValue);
Environment.SetEnvironmentVariable("AZURE_CLIENT_ID", clientID);
Environment.SetEnvironmentVariable("AZURE_TENANT_ID", tenantID);
TokenCredential tokenCredential = new DefaultAzureCredential();
Výsledný tokenCredential se pak dá předat metodě připojení ke službě IoT Hub pro libovolného klienta sady SDK, který přijímá přihlašovací údaje Microsoft Entra:
V tomto příkladu se TokenCredential předává do ServiceClient.Create, aby se vytvořil objekt připojení ServiceClient.
string hostname = "xxxxxxxxxx.azure-devices.net";
using var serviceClient = ServiceClient.Create(hostname, tokenCredential, TransportType.Amqp);
V tomto příkladu se TokenCredential předává do RegistryManager.Create, aby se vytvořil objekt RegistryManager.
string hostname = "xxxxxxxxxx.azure-devices.net";
registryManager = RegistryManager.Create(hostname, tokenCredential);
Ukázka kódu
Pro funkční ukázku ověřování služby Microsoft Entra podívejte se na ukázku ověřování na základě rolí.
Vyvolání metody v zařízení
Vyvolání metody na zařízení:
- Vytvořte objekt CloudToDeviceMethod . Název metody zařízení přímo předejte jako parametr.
- Vyvolejte InvokeDeviceMethodAsync k vyvolání metody na zařízení.
Tento příklad volá metodu "reboot", která zahájí restartování v zařízení. Metoda "reboot" je namapována na naslouchací komponentu na zařízení, jak je popsáno v části Vytvoření naslouchací komponenty pro zpětné volání metody v tomto článku.
string targetDevice = "myDeviceId";
CloudToDeviceMethod method = new CloudToDeviceMethod("reboot");
method.ResponseTimeout = TimeSpan.FromSeconds(30);
CloudToDeviceMethodResult response = await serviceClient.InvokeDeviceMethodAsync(targetDevice, method);
Console.WriteLine("Invoked firmware update on device.");
Ukázky služeb sady SDK
Sada Azure IoT SDK pro .NET poskytuje funkční ukázky aplikací služeb, které zpracovávají úlohy zpráv. Další informace naleznete v tématu:
- Vyžaduje Java SE Development Kit 8. Ujistěte se, že jste v části Dlouhodobá podpora vybrali Javu 8 a přejděte ke stažení sady JDK 8.
Přehled
Tento článek popisuje, jak pomocí sady Azure IoT SDK pro Javu vytvořit kód aplikace zařízení a backendové služby pro přímé metody zařízení.
Vytvoření aplikace zařízení
Tato část popisuje, jak pomocí kódu aplikace zařízení vytvořit zpětně volající posluchač pro přímou metodu.
Třída DeviceClient zveřejňuje všechny metody, které potřebujete k interakci s přímými metodami na zařízení.
Důležité
Tento článek obsahuje postup připojení zařízení pomocí sdíleného přístupového podpisu, označovaného také jako ověřování symetrického klíče. Tato metoda ověřování je vhodná pro testování a vyhodnocení, ale ověřování zařízení pomocí certifikátů X.509 je bezpečnější přístup. Další informace najdete v tématu Osvědčené postupy zabezpečení pro zabezpečení připojení řešení > IoT.
Příkazy importu zařízení
Pro přístup k sadě Azure IoT SDK pro Javu použijte následující příkazy importu zařízení.
import com.microsoft.azure.sdk.iot.device.*;
import com.microsoft.azure.sdk.iot.device.exceptions.IotHubClientException;
import com.microsoft.azure.sdk.iot.device.twin.DirectMethodPayload;
import com.microsoft.azure.sdk.iot.device.twin.DirectMethodResponse;
import com.microsoft.azure.sdk.iot.device.twin.MethodCallback;
import com.microsoft.azure.sdk.iot.device.transport.IotHubConnectionStatus;
import com.microsoft.azure.sdk.iot.device.twin.SubscriptionAcknowledgedCallback;
Připojení zařízení ke službě IoT Hub
Aplikace zařízení se může ověřit ve službě IoT Hub pomocí následujících metod:
- Sdílený přístupový klíč
- Certifikát X.509
Důležité
Tento článek obsahuje postup připojení zařízení pomocí sdíleného přístupového podpisu, označovaného také jako ověřování symetrického klíče. Tato metoda ověřování je vhodná pro testování a vyhodnocení, ale ověřování zařízení pomocí certifikátů X.509 je bezpečnější přístup. Další informace najdete v tématu Osvědčené postupy zabezpečení pro zabezpečení připojení řešení > IoT.
Ověřování pomocí sdíleného přístupového klíče
Připojení k zařízení:
K výběru přenosového protokolu použijte IotHubClientProtocol . Příklad:
IotHubClientProtocol protocol = IotHubClientProtocol.MQTT;Pomocí konstruktoru
DeviceClientpřidejte primární připojovací řetězec a protokol zařízení.String connString = "{IoT hub device connection string}"; DeviceClient client = new DeviceClient(connString, protocol);K připojení zařízení k IoT Hubu použijte open . Pokud je klient již otevřený, metoda nic nedělá.
client.open(true);
Ověřování pomocí certifikátu X.509
Připojení zařízení ke službě IoT Hub pomocí certifikátu X.509:
- Sestavte objekt SSLContext pomocí buildSSLContext.
-
SSLContextPřidejte informace do objektu ClientOptions. - Zavolejte DeviceClient a pomocí
ClientOptionsinformací vytvořte připojení zařízení k IoT Hubu.
Tento příklad ukazuje hodnoty vstupních parametrů certifikátu jako místní proměnné pro přehlednost. V produkčním systému uložte citlivé vstupní parametry do proměnných prostředí nebo do jiného bezpečnějšího umístění úložiště. Například použijte Environment.GetEnvironmentVariable("PUBLICKEY") ke čtení proměnné prostředí obsahující řetězec certifikátu veřejného klíče.
private static final String publicKeyCertificateString =
"-----BEGIN CERTIFICATE-----\n" +
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n" +
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n" +
"-----END CERTIFICATE-----\n";
//PEM encoded representation of the private key
private static final String privateKeyString =
"-----BEGIN EC PRIVATE KEY-----\n" +
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n" +
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n" +
"-----END EC PRIVATE KEY-----\n";
SSLContext sslContext = SSLContextBuilder.buildSSLContext(publicKeyCertificateString, privateKeyString);
ClientOptions clientOptions = ClientOptions.builder().sslContext(sslContext).build();
DeviceClient client = new DeviceClient(connString, protocol, clientOptions);
Další informace o ověřování certifikátů najdete tady:
Ukázky kódu
Pracovní ukázky ověřování certifikátů X.509 zařízení najdete tady:
Vytvořit naslouchací modul pro přímou metodu
K inicializaci posluchače zpětného volání přímé metody použijte subscribeToMethods.
subscribeToMethods naslouchá příchozím přímým metodám, dokud se připojení neukončine. Název metody a datová část se přijímají pro každé volání přímé metody.
Posluchač by měl volat DirectMethodResponse k odeslání potvrzení přijetí metodické odpovědi cílové aplikaci.
Příklad:
client.subscribeToMethods(
(methodName, methodData, context) ->
{
System.out.println("Received a direct method invocation with name " + methodName + " and payload " + methodData.getPayloadAsJsonString());
return new DirectMethodResponse(200, methodData);
},
null);
System.out.println("Successfully subscribed to direct methods");
Poznámka:
Aby bylo všechno jednoduché, tento článek neimplementuje žádné zásady opakování. V produkčním kódu byste měli implementovat zásady opakování (například exponenciální zpoždování), jak je navrženo při zpracování přechodných chyb.
Ukázky zařízení sady SDK
Sada Azure IoT SDK pro Javu obsahuje funkční ukázku pro testování konceptů aplikací zařízení popsaných v tomto článku. Další informace naleznete v Ukázka přímé metody.
Vytvoření back-endové aplikace
Tato část popisuje, jak zahájit vzdálené restartování zařízení pomocí přímé metody.
ServiceClient
DeviceMethod třída obsahuje metody, které služby mohou použít pro přístup k přímým metodám.
Příkazy importu služby
Pro přístup k sadě Azure IoT SDK pro Javu použijte následující příkazy importu služby.
import com.microsoft.azure.sdk.iot.service.methods.DirectMethodRequestOptions;
import com.microsoft.azure.sdk.iot.service.methods.DirectMethodsClient;
import com.microsoft.azure.sdk.iot.service.methods.DirectMethodResponse;
Připojení ke službě IoT Hub
Back-endovou službu můžete ke službě IoT Hub připojit pomocí následujících metod:
- Zásady sdíleného přístupu
- Microsoft Entra
Důležité
Tento článek obsahuje postup připojení ke službě pomocí sdíleného přístupového podpisu. Tato metoda ověřování je vhodná pro testování a vyhodnocení, ale ověřování ve službě pomocí MICROSOFT Entra ID nebo spravovaných identit je bezpečnější přístup. Další informace najdete v tématu Osvědčené postupy zabezpečení zabezpečení řešení > IoT v cloudu.
Připojení pomocí zásad sdíleného přístupu
Pomocí konstruktoru DeviceMethod přidejte primární připojovací řetězec služby a připojte se ke službě IoT Hub.
K vyvolání přímé metody na zařízení prostřednictvím IoT Hubu potřebuje vaše služba oprávnění k připojení ke službě. Ve výchozím nastavení se každá služba IoT Hub vytvoří pomocí zásady sdíleného přístupu s názvem služby , která toto oprávnění uděluje.
Jako parametr DeviceMethod konstruktoru zadejte zásadu sdíleného přístupu služby . Další informace o zásadách sdíleného přístupu najdete v tématu Řízení přístupu ke službě IoT Hub pomocí sdílených přístupových podpisů.
Příklad:
String iotHubConnectionString = "HostName=xxxxx.azure-devices.net;SharedAccessKeyName=service;SharedAccessKey=xxxxxxxxxxxxxxxxxxxxxxxx";
DeviceMethod methodClient = new DeviceMethod(iotHubConnectionString);
Připojení pomocí Microsoft Entra
Back-endová aplikace, která používá Microsoft Entra, se musí před připojením ke službě IoT Hub úspěšně ověřit a získat přihlašovací údaje tokenu zabezpečení. Tento token je předán metodě připojení IoT Hubu. Obecné informace o nastavení a používání Microsoft Entra pro IoT Hub naleznete v tématu Řízení přístupu ke službě IoT Hub pomocí Microsoft Entra ID.
Přehled ověřování pomocí Java SDK a Azure Identity najdete v tématu Ověřování pomocí Javy a Identity Azure.
Pro zjednodušení se tato část zaměřuje na popis ověřování pomocí tajného klíče klienta.
Konfigurace aplikace Microsoft Entra
Musíte nastavit aplikaci Microsoft Entra, která je nakonfigurovaná pro vaše upřednostňované přihlašovací údaje ověřování. Aplikace obsahuje parametry, jako je tajný klíč klienta, který používá back-endová aplikace k ověření. Dostupné konfigurace ověřování aplikací:
- Tajný kód klienta
- Certifikát
- Údaje o federované identitě
Aplikace Microsoft Entra mohou v závislosti na provedených operacích vyžadovat určitá oprávnění role. K povolení přístupu ke čtení a zápisu k zařízení a modulovým dvojčatům služby IoT Hub je například vyžadován IoT Hub Twin Contributor. Další informace najdete v tématu Řízení přístupu k IoT Hubu s využitím přiřazení rolí Azure RBAC.
Další informace o nastavení aplikace Microsoft Entra najdete v tématu Rychlý start: Registrace aplikace na platformě Microsoft Identity Platform.
Ověřování pomocí DefaultAzureCredential
Nejjednodušší způsob, jak použít Microsoft Entra pro autentizaci backend aplikace, je využít DefaultAzureCredential. Nicméně, v produkčním prostředí se doporučuje využít jiný způsob, včetně specifického TokenCredential nebo zjednodušené verze ChainedTokenCredential.
Další informace o výhodách a nevýhodách použití DefaultAzureCredentialnajdete v řetězcích přihlašovacích údajů v klientské knihovně Azure Identity pro Javu.
DefaultAzureCredential podporuje různé mechanismy ověřování a určuje odpovídající typ přihlašovacích údajů na základě prostředí, ve které se provádí. Pokusí se použít více typů přihlašovacích údajů v pořadí, dokud nenajde funkční přihlašovací údaje.
Přihlašovací údaje aplikace Microsoft Entra můžete ověřit pomocí defaultAzureCredentialBuilder. Uložte parametry připojení, jako jsou klientský tajný kód, ID tenanta a ID klienta, jako proměnné prostředí. Jakmile je TokenCredential vytvořen, předejte ho do ServiceClient nebo jiného builderu jako parametr 'credential'.
V tomto příkladu DefaultAzureCredentialBuilder se pokusí ověřit připojení ze seznamu popsaného v části DefaultAzureCredential. Výsledkem úspěšného ověřování Microsoft Entra je pověření tokenu zabezpečení, které je předané konstruktoru, jako je ServiceClient.
TokenCredential defaultAzureCredential = new DefaultAzureCredentialBuilder().build();
Ověřování pomocí ClientSecretCredentialBuilder
Pomocí ClientSecretCredentialBuilder můžete vytvořit přihlašovací údaje pomocí tajných informací klienta. Pokud je tato metoda úspěšná, vrátí tokenCredential , který lze předat ServiceClient nebo jinému tvůrci jako parametr credential.
V tomto příkladu byly hodnoty klientského tajemství, ID klienta a ID tenanta pro registraci aplikace Microsoft Entra přidány do proměnných prostředí. Tyto proměnné prostředí ClientSecretCredentialBuilder se používají k sestavení přihlašovacích údajů.
string clientSecretValue = System.getenv("AZURE_CLIENT_SECRET");
string clientID = System.getenv("AZURE_CLIENT_ID");
string tenantID = System.getenv("AZURE_TENANT_ID");
TokenCredential credential =
new ClientSecretCredentialBuilder()
.tenantId(tenantID)
.clientId(clientID)
.clientSecret(clientSecretValue)
.build();
Jiné třídy ověřování
Sada Java SDK také obsahuje tyto třídy, které ověřují back-endovou aplikaci pomocí Microsoft Entra:
- AuthorizationCodeCredential
- AzureCliCredential
- AzureDeveloperCliCredential
- AzurePipelinesCredential
- ChainedTokenCredential
- Přihlašovací údaje klienta
- Certifikát Klienta
- DeviceCodeCredential
- EnvironmentCredential
- InteractiveBrowserCredential
- ManagedIdentityCredential
- OnBehalfOfCredential
Ukázky kódu
Pracovní ukázky ověřování služby Microsoft Entra najdete v ukázce ověřování na základě rolí.
Vyvolání metody v zařízení
Zavolejte DeviceMethod.invoke pro vyvolání metody na zařízení a vrácení stavu výsledku.
Parametr užitečného zatížení invoke je volitelný. Použijte null, pokud není zadán žádný datový obsah. Parametr datové části může mít různé datové typy, včetně řetězce, pole bajtů a HashMap. Příklady najdete v tématu Testy přímé metody.
Tento příklad volá metodu "reboot", která zahájí restartování v zařízení. Metoda "reboot" je namapována na naslouchací komponentu na zařízení, jak je popsáno v části Vytvoření naslouchací komponenty pro zpětné volání metody v tomto článku.
Příklad:
String deviceId = "myFirstDevice";
String methodName = "reboot";
String payload = "Test payload";
Long responseTimeout = TimeUnit.SECONDS.toSeconds(30);
Long connectTimeout = TimeUnit.SECONDS.toSeconds(5);
MethodResult result = methodClient.invoke(deviceId, methodName, responseTimeout, connectTimeout, payload);
if (result == null)
{
throw new IOException("Method invoke returns null");
}
System.out.println("Status=" + result.getStatus());
Ukázky služeb sady SDK
Sada Azure IoT SDK pro Javu poskytuje funkční ukázku aplikací služeb, které zpracovávají úlohy přímé metody. Další informace naleznete v tématu:
- Python SDK – Doporučuje se Python verze 3.7 nebo novější . Ujistěte se, že používáte 32bitovou, nebo 64bitovou instalaci podle požadavků vašeho nastavení. Při vyzvání během instalace nezapomeňte přidat Python do proměnné prostředí specifické pro vaši platformu.
Přehled
Tento článek popisuje, jak pomocí sady Azure IoT SDK pro Python vytvořit kódy aplikací zařízení a back-endových služeb pro metody přímého ovládání zařízení.
Instalace balíčků
Aby bylo možné vytvářet aplikace zařízení, musí být nainstalovaná knihovna azure-iot-device .
pip install azure-iot-device
Aby bylo možné vytvářet aplikace back-endové služby, musí být nainstalovaná knihovna azure-iot-hub .
pip install azure-iot-hub
Vytvoření aplikace zařízení
Tato část popisuje, jak pomocí kódu aplikace zařízení vytvořit zpětně volající posluchač pro přímou metodu.
Třída IoTHubDeviceClient obsahuje metody, které lze použít k práci s přímými metodami.
Příkaz importu zařízení
Přidejte tento příkaz importu pro přístup IoTHubDeviceClient a MethodResponse.
# import the device client library
from azure.iot.device import IoTHubDeviceClient, MethodResponse
Připojení k zařízení
Aplikace zařízení se může ověřit ve službě IoT Hub pomocí následujících metod:
- Sdílený přístupový klíč
- Certifikát X.509
Důležité
Tento článek obsahuje postup připojení zařízení pomocí sdíleného přístupového podpisu, označovaného také jako ověřování symetrického klíče. Tato metoda ověřování je vhodná pro testování a vyhodnocení, ale ověřování zařízení pomocí certifikátů X.509 je bezpečnější přístup. Další informace najdete v tématu Osvědčené postupy zabezpečení pro zabezpečení připojení řešení > IoT.
Ověřování pomocí sdíleného přístupového klíče
Pomocí create_from_connection_string připojte aplikaci k zařízení prostřednictvím připojovacího řetězce zařízení.
# substitute the device connection string in conn_str
# and add it to the IoTHubDeviceClient object
conn_str = "{IoT hub device connection string}"
device_client = IoTHubDeviceClient.create_from_connection_string(conn_str)
Ověřování pomocí certifikátu X.509
Připojení zařízení ke službě IoT Hub pomocí certifikátu X.509:
- Přidání parametrů certifikátu X.509 pomocí create_from_x509_certificate
- Vyvolejte connect pro připojení klienta zařízení
Tento příklad ukazuje hodnoty vstupních parametrů certifikátu jako místní proměnné pro přehlednost. V produkčním systému uložte citlivé vstupní parametry do proměnných prostředí nebo do jiného bezpečnějšího umístění úložiště. Použijte os.getenv("HOSTNAME") například ke čtení proměnné prostředí s názvem hostitele.
# The Azure IoT hub name
hostname = "xxxxx.azure-devices.net"
# The device that has been created on the portal using X509 CA signing or self-signing capabilities
device_id = "MyDevice"
# The X.509 certificate file name
cert_file = "~/certificates/certs/sensor-thl-001-device.cert.pfx"
key_file = "~/certificates/certs/sensor-thl-001-device.cert.key"
# The optional certificate pass phrase
pass_phrase = "1234"
x509 = X509(
cert_file,
key_file,
pass_phrase,
)
# The client object is used to interact with your Azure IoT hub.
device_client = IoTHubDeviceClient.create_from_x509_certificate(
hostname=hostname, device_id=device_id, x509=x509
)
# Connect to IoT Hub
await device_client.connect()
Další informace o ověřování certifikátů najdete tady:
Ukázky kódu
Pracovní ukázky ověřování certifikátů X.509 zařízení najdete v příkladech, jejichž názvy souborů končí na "x509" ve scénářích Async hub.
Vytvořte zpětné volání přímé metody
Pomocí on_method_request_received vytvořte obslužnou funkci nebo korutinu, která bude volána při přijetí přímé metody. Posluchač je přiřazený ke klíčovému slovu názvu metody, například "reboot". Název metody lze použít ve službě IoT Hub nebo back-endové aplikaci k aktivaci metody zpětného volání v zařízení.
Funkce obslužné rutiny by měla vytvořit MethodResponse a předat ji send_method_response, aby odeslala potvrzení odpovědi přímé metody volající aplikaci.
Tento příklad nastaví obslužnou rutinu přímé metody s názvem method_request_handler.
try:
# Attach the handler to the client
client.on_method_request_received = method_request_handler
except:
# In the event of failure, clean up
client.shutdown()
V tomto příkladu metoda zpětného volání method_request_handler implementuje přímou metodu na zařízení. Kód se spustí při volání přímé metody rebootDevice z aplikace služby. Metoda volá send_method_response pro odeslání potvrzení o přijetí odpovědi přímé metody volající aplikaci.
# Define the handler for method requests
def method_request_handler(method_request):
if method_request.name == "rebootDevice":
# Act on the method by rebooting the device
print("Rebooting device")
time.sleep(20)
print("Device rebooted")
# Create a method response indicating the method request was resolved
resp_status = 200
resp_payload = {"Response": "This is the response from the device"}
method_response = MethodResponse(method_request.request_id, resp_status, resp_payload)
else:
# Create a method response indicating the method request was for an unknown method
resp_status = 404
resp_payload = {"Response": "Unknown method"}
method_response = MethodResponse(method_request.request_id, resp_status, resp_payload)
# Send the method response
client.send_method_response(method_response)
Ukázky zařízení sady SDK
Sada Azure IoT SDK pro Python poskytuje funkční ukázku aplikace zařízení, která zpracovává úlohy přímých metod. Další informace naleznete v tématu Receive direct method.
Vytvoření back-endové aplikace
Tato část popisuje, jak pomocí aplikace backendové služby zavolat přímou metodu na zařízení.
Třída IoTHubRegistryManager zveřejňuje všechny metody potřebné k vytvoření back-endové aplikace pro odesílání zpráv do zařízení.
Příkazy importu služby
Přidejte tyto příkazy importu pro připojení k IoT Hub, odesílání přímých metod z cloudu do zařízení a příjem odpovědí přímých metod zařízení.
from azure.iot.hub import IoTHubRegistryManager
from azure.iot.hub.models import CloudToDeviceMethod, CloudToDeviceMethodResult
Připojení ke službě IoT Hub
Back-endovou službu můžete ke službě IoT Hub připojit pomocí následujících metod:
- Zásady sdíleného přístupu
- Microsoft Entra
Důležité
Tento článek obsahuje postup připojení ke službě pomocí sdíleného přístupového podpisu. Tato metoda ověřování je vhodná pro testování a vyhodnocení, ale ověřování ve službě pomocí MICROSOFT Entra ID nebo spravovaných identit je bezpečnější přístup. Další informace najdete v tématu Osvědčené postupy zabezpečení zabezpečení řešení > IoT v cloudu.
Připojení pomocí zásad sdíleného přístupu
Připojte se ke službě IoT Hub pomocí from_connection_string.
K vyvolání přímé metody na zařízení prostřednictvím IoT Hubu potřebuje vaše služba oprávnění k připojení ke službě. Ve výchozím nastavení se každá služba IoT Hub vytvoří pomocí zásady sdíleného přístupu s názvem služby , která toto oprávnění uděluje.
Jako parametr from_connection_stringzadejte zásady sdíleného přístupu služby . Další informace o zásadách sdíleného přístupu najdete v tématu Řízení přístupu ke službě IoT Hub pomocí sdílených přístupových podpisů.
Příklad:
# Connect to IoT hub
IOTHUB_CONNECTION_STRING = "{IoT hub service connection string}"
iothub_registry_manager = IoTHubRegistryManager.from_connection_string(IOTHUB_CONNECTION_STRING)
Připojení pomocí Microsoft Entra
Back-endová aplikace, která používá Microsoft Entra, se musí před připojením ke službě IoT Hub úspěšně ověřit a získat přihlašovací údaje tokenu zabezpečení. Tento token je předán metodě připojení IoT Hubu. Obecné informace o nastavení a používání Microsoft Entra pro IoT Hub naleznete v tématu Řízení přístupu ke službě IoT Hub pomocí Microsoft Entra ID.
Přehled ověřování sady Python SDK najdete v tématu Ověřování aplikací Pythonu ve službách Azure pomocí sady Azure SDK pro Python.
Konfigurace aplikace Microsoft Entra
Musíte nastavit aplikaci Microsoft Entra, která je nakonfigurovaná pro vaše upřednostňované přihlašovací údaje ověřování. Aplikace obsahuje parametry, jako je tajný klíč klienta, který používá back-endová aplikace k ověření. Dostupné konfigurace ověřování aplikací:
- Tajný kód klienta
- Certifikát
- Údaje o federované identitě
Aplikace Microsoft Entra mohou v závislosti na provedených operacích vyžadovat určitá oprávnění role. K povolení přístupu ke čtení a zápisu k zařízení a modulovým dvojčatům služby IoT Hub je například vyžadován IoT Hub Twin Contributor. Další informace najdete v tématu Řízení přístupu k IoT Hubu s využitím přiřazení rolí Azure RBAC.
Další informace o nastavení aplikace Microsoft Entra najdete v tématu Rychlý start: Registrace aplikace na platformě Microsoft Identity Platform.
Ověřování pomocí DefaultAzureCredential
Nejjednodušší způsob, jak použít Microsoft Entra pro autentizaci backend aplikace, je využít DefaultAzureCredential. Nicméně, v produkčním prostředí se doporučuje využít jiný způsob, včetně specifického TokenCredential nebo zjednodušené verze ChainedTokenCredential. Pro zjednodušení popisuje tato část ověřování pomocí DefaultAzureCredential a tajný klíč klienta. Další informace o výhodách a nevýhodách použití DefaultAzureCredentialnajdete v řetězcích přihlašovacích údajů v klientské knihovně Azure Identity pro Python.
DefaultAzureCredential podporuje různé mechanismy ověřování a určuje odpovídající typ přihlašovacích údajů na základě prostředí, ve které se provádí. Pokusí se použít více typů přihlašovacích údajů v pořadí, dokud nenajde funkční přihlašovací údaje.
Microsoft Entra vyžaduje tento balíček importu a odpovídající import příkaz:
pip install azure-identity
from azure.identity import DefaultAzureCredential
V tomto příkladu byly do proměnných prostředí přidány tajný klíč klienta z registrace aplikace Microsoft Entra, ID klienta a ID tenanta. Tyto proměnné prostředí používá DefaultAzureCredential k autentizaci aplikace. Výsledkem úspěšného ověřování Microsoft Entra je zabezpečený tokenový přihlašovací údaj, který je předán do metody připojení IoT Hubu.
from azure.identity import DefaultAzureCredential
credential = DefaultAzureCredential()
Výsledný AccessToken se pak dá předat pro from_token_credential připojení ke službě IoT Hub pro libovolného klienta sady SDK, který přijímá přihlašovací údaje Microsoft Entra:
- IoTHubRegistryManager k vytvoření připojení služby k IoT Hub pomocí přihlašovacích údajů tokenu Entra.
- IoTHubJobManager
- DigitalTwinClient
- IoTHubHttpRuntimeManager
- IoTHubConfigurationManager
from_token_credential vyžaduje dva parametry:
- Adresa URL služby Azure – Adresa URL služby Azure by měla být ve formátu
{Your Entra domain URL}.azure-devices.netbez předponyhttps://. NapříkladMyAzureDomain.azure-devices.net. - Token přihlašovacích údajů Azure
V tomto příkladu se přihlašovací údaje Azure získávají pomocí DefaultAzureCredential. Adresa URL a přihlašovací údaje služby Azure jsou pak zadány pro IoTHubRegistryManager.from_token_credential, aby se vytvořilo připojení ke službě IoT Hub.
import sys
import os
from azure.identity import DefaultAzureCredential
from azure.iot.hub import IoTHubRegistryManager
# Define the client secret values
clientSecretValue = 'xxxxxxxxxxxxxxx'
clientID = 'xxxxxxxxxxxxxx'
tenantID = 'xxxxxxxxxxxxx'
# Set environment variables
os.environ['AZURE_CLIENT_SECRET'] = clientSecretValue
os.environ['AZURE_CLIENT_ID'] = clientID
os.environ['AZURE_TENANT_ID'] = tenantID
# Acquire a credential object
credential = DefaultAzureCredential()
# Use Entra to authorize IoT Hub service
print("Connecting to IoTHubRegistryManager...")
iothub_registry_manager = IoTHubRegistryManager.from_token_credential(
url="MyAzureDomain.azure-devices.net",
token_credential=credential)
Ukázky kódu
Pracovní ukázky ověřování služby Microsoft Entra naleznete v tématu Microsoft Authentication Library (MSAL) pro Python.
Vyvolání metody v zařízení
Přímou metodu můžete vyvolat podle názvu na zařízení. Název metody identifikuje metodu. Ve předchozím a následujícím příkladu zařízení zobrazeném v Vytvoření zpětného volání přímé metody je název přímé metody "rebootDevice".
K aktivaci přímé metody na zařízení:
- Vytvořte objekt CloudToDeviceMethod . Jako parametry zadejte název metody a uživatelská data.
- Voláním invoke_device_method vyvoláte přímou metodu na zařízení. Jako parametry uveďte ID zařízení a
CloudToDeviceMethodobjekt datové části.
V tomto příkladu se CloudToDeviceMethod volá přímá metoda s názvem rebootDevice na zařízení. Po úspěšném vyvolání přímé metody se zobrazí datová část odpovědi přímé metody.
CONNECTION_STRING = "{IoTHubConnectionString}"
DEVICE_ID = "{deviceId}"
METHOD_NAME = "rebootDevice"
METHOD_PAYLOAD = "{\"method_number\":\"42\"}"
TIMEOUT = 60
WAIT_COUNT = 10
try:
print ( "" )
print ( "Invoking device to reboot..." )
# Call the direct method.
deviceMethod = CloudToDeviceMethod(method_name=METHOD_NAME, payload=METHOD_PAYLOAD)
response = registry_manager.invoke_device_method(DEVICE_ID, deviceMethod)
print ( "Successfully invoked the device to reboot." )
print ( "The device has returned this payload:" )
print ( response.payload )
except Exception as ex:
print ( "" )
print ( "Unexpected error {0}".format(ex) )
return
Ukázky služeb sady SDK
Sada Azure IoT SDK pro Python poskytuje funkční ukázky aplikací služeb, které zpracovávají úlohy přímých metod. Další informace naleznete v tématu:
- Vyžaduje Node.js verze 10.0.x nebo novější.
Přehled
Tento článek popisuje, jak pomocí sady Azure IoT SDK specifické pro Node.js vytvořit kód aplikace pro zařízení a backendové služby pro přímé metody zařízení.
Vytvoření aplikace zařízení
Tato část popisuje, jak pomocí kódu aplikace zařízení vytvořit zpětné volání přímé metody.
Instalace balíčku SDK
Balíček azure-iot-device obsahuje objekty, které pracují jako rozhraní se zařízeními IoT. Spuštěním tohoto příkazu nainstalujte sadu SDK zařízení azure-iot-device na vývojový počítač:
npm install azure-iot-device --save
Připojení zařízení ke službě IoT Hub
Aplikace zařízení se může ověřit ve službě IoT Hub pomocí následujících metod:
- Certifikát X.509
- Sdílený přístupový klíč
Důležité
Tento článek obsahuje postup připojení zařízení pomocí sdíleného přístupového podpisu, označovaného také jako ověřování symetrického klíče. Tato metoda ověřování je vhodná pro testování a vyhodnocení, ale ověřování zařízení pomocí certifikátů X.509 je bezpečnější přístup. Další informace najdete v tématu Osvědčené postupy zabezpečení pro zabezpečení připojení řešení > IoT.
Ověřování pomocí certifikátu X.509
Certifikát X.509 je připojen k přenosu spojení mezi zařízením a IoT Hubem.
Konfigurace připojení typu device-to-IoT Hub pomocí certifikátu X.509:
Zavolejte fromConnectionString pro přidání připojovacího řetězce zařízení nebo identity a typu přenosu do objektu
Client. Přidejtex509=truedo připojovacího řetězce, aby bylo možné označit, že se přidává certifikát kDeviceClientOptions. Příklad:Připojovací řetězec pro zařízení:
HostName=xxxxx.azure-devices.net;DeviceId=Device-1;SharedAccessKey=xxxxxxxxxxxxx;x509=truePřipojovací řetězec modulu identity:
HostName=xxxxx.azure-devices.net;DeviceId=Device-1;ModuleId=Module-1;SharedAccessKey=xxxxxxxxxxxxx;x509=true
Nakonfigurujte proměnnou JSON s podrobnostmi o certifikátu a předejte ji do DeviceClientOptions.
Zavolejte setOptions pro přidání certifikátu a klíče X.509 (a volitelně i přístupového hesla) k transportu klienta.
Voláním otevřete připojení ze zařízení ke službě IoT Hub.
Tento příklad ukazuje informace o konfiguraci certifikátu v rámci proměnné JSON. Konfigurace certifikace clientOptions se předává setOptions a připojení se otevře pomocí open.
const Client = require('azure-iot-device').Client;
const Protocol = require('azure-iot-device-mqtt').Mqtt;
// Connection string illustrated for demonstration only. Never hard-code the connection string in production. Instead use an environmental variable or other secure storage.
const connectionString = `HostName=xxxxx.azure-devices.net;DeviceId=Device-1;SharedAccessKey=xxxxxxxxxxxxx;x509=true`
const client = Client.fromConnectionString(connectionString, Protocol);
var clientOptions = {
cert: myX509Certificate,
key: myX509Key,
passphrase: passphrase,
http: {
receivePolicy: {
interval: 10
}
}
}
client.setOptions(clientOptions);
client.open(connectCallback);
Další informace o ověřování certifikátů najdete tady:
Ukázka kódu
Pro ukázku funkčního ověřování certifikátu X.509 zařízení si prohlédněte Jednoduchý ukázkový příklad zařízení X.509.
Ověřování pomocí sdíleného přístupového klíče
Volba přenosového protokolu
Objekt Client podporuje tyto protokoly:
Amqp-
Http– Při použitíHttpClientinstance kontroluje zprávy ze služby IoT Hub zřídka (minimálně každých 25 minut). MqttMqttWsAmqpWs
Nainstalujte na svůj vývojový počítač potřebné přenosové protokoly.
Tento příkaz například nainstaluje Amqp protokol:
npm install azure-iot-device-amqp --save
Další informace o rozdílech mezi podporou MQTT, AMQP a HTTPS najdete v pokynech ke komunikaci typu Cloud-zařízení a volba komunikačního protokolu.
Vytvoření objektu klienta
Vytvořte Client objekt pomocí nainstalovaného balíčku.
Příklad:
const Client = require('azure-iot-device').Client;
Vytvoření objektu protokolu
Vytvořte Protocol objekt pomocí nainstalovaného přenosového balíčku.
Tento příklad přiřadí protokol AMQP:
const Protocol = require('azure-iot-device-amqp').Amqp;
Přidejte připojovací řetězec zařízení a přenosový protokol
Zavolejte fromConnectionString pro zadání parametrů připojení zařízení:
- connStr - připojovací řetězec zařízení.
- transportCtor - transportní protokol.
V tomto příkladu se používá přenosový Amqp protokol:
const deviceConnectionString = "{IoT hub device connection string}"
const Protocol = require('azure-iot-device-mqtt').Amqp;
let client = Client.fromConnectionString(deviceConnectionString, Protocol);
Otevření připojení ke službě IoT Hub
Pomocí otevřené metody otevřete připojení mezi zařízením IoT a IoT Hubem.
Příklad:
client.open(function(err) {
if (err) {
console.error('error connecting to hub: ' + err);
process.exit(1);
}
})
Vytvořte zpětné volání přímé metody
Zavolejte onDeviceMethod k vytvoření funkce obslužné rutiny zpětného volání nebo korutiny, která je volána při přijetí přímé metody. Posluchač je přiřazený ke klíčovému slovu názvu metody, například "reboot". Název metody lze použít ve službě IoT Hub nebo back-endové aplikaci k aktivaci metody zpětného volání v zařízení.
Funkce obslužné rutiny zpětného volání by měla volat response.send k zaslání zprávy o potvrzení odpovědi volající aplikaci.
Tento příklad nastaví obslužnou rutinu přímé metody s názvem onReboot, která se volá, když je použit název přímé metody "reboot".
client.onDeviceMethod('reboot', onReboot);
V tomto příkladu metoda zpětného volání onReboot implementuje přímou metodu na zařízení. Kód se spustí při volání přímé metody "reboot" z aplikace služby. Funkce response.send zavolá a odešle zprávu o potvrzení odpovědi volající aplikaci.
var onReboot = function(request, response) {
// Respond the cloud app for the direct method
response.send(200, 'Reboot started', function(err) {
if (err) {
console.error('An error occurred when sending a method response:\n' + err.toString());
} else {
console.log('Response to method \'' + request.methodName + '\' sent successfully.');
}
});
// Add your device's reboot API for physical restart.
console.log('Rebooting!');
};
Ukázky zařízení sady SDK
Sada Azure IoT SDK pro Node.js poskytuje funkční ukázky aplikací zařízení, které zpracovávají úlohy správy zařízení. Další informace naleznete v tématu:
Vytvoření back-endové aplikace
Tato část popisuje, jak vyvolat přímou metodu na zařízení.
Nainstalovat balíček SDK služby
Spuštěním tohoto příkazu nainstalujte azure-iothub na vývojový počítač:
npm install azure-iothub --save
Připojení ke službě IoT Hub
Back-endovou službu můžete ke službě IoT Hub připojit pomocí následujících metod:
- Zásady sdíleného přístupu
- Microsoft Entra
Důležité
Tento článek obsahuje postup připojení ke službě pomocí sdíleného přístupového podpisu. Tato metoda ověřování je vhodná pro testování a vyhodnocení, ale ověřování ve službě pomocí MICROSOFT Entra ID nebo spravovaných identit je bezpečnější přístup. Další informace najdete v tématu Osvědčené postupy zabezpečení zabezpečení řešení > IoT v cloudu.
Připojení pomocí zásad sdíleného přístupu
Použijte fromConnectionString pro připojení ke službě IoT Hub.
K vyvolání přímé metody na zařízení prostřednictvím IoT Hubu potřebuje vaše služba oprávnění k připojení ke službě. Ve výchozím nastavení se každá služba IoT Hub vytvoří pomocí zásady sdíleného přístupu s názvem služby , která toto oprávnění uděluje.
Jako parametr do CreateFromConnectionString zadejte připojovací řetězec zásad sdíleného přístupu služby. Další informace o zásadách sdíleného přístupu najdete v tématu Řízení přístupu ke službě IoT Hub pomocí sdílených přístupových podpisů.
var Client = require('azure-iothub').Client;
var connectionString = '{IoT hub shared access policy connection string}';
var client = Client.fromConnectionString(connectionString);
Připojení pomocí Microsoft Entra
Back-endová aplikace, která používá Microsoft Entra, se musí před připojením ke službě IoT Hub úspěšně ověřit a získat přihlašovací údaje tokenu zabezpečení. Tento token je předán metodě připojení IoT Hubu. Obecné informace o nastavení a používání Microsoft Entra pro IoT Hub naleznete v tématu Řízení přístupu ke službě IoT Hub pomocí Microsoft Entra ID.
Přehled ověřování Node.js SDK najdete v těchto tématech:
Konfigurace aplikace Microsoft Entra
Musíte nastavit aplikaci Microsoft Entra, která je nakonfigurovaná pro vaše upřednostňované přihlašovací údaje ověřování. Aplikace obsahuje parametry, jako je tajný klíč klienta, který používá back-endová aplikace k ověření. Dostupné konfigurace ověřování aplikací:
- Tajný kód klienta
- Certifikát
- Údaje o federované identitě
Aplikace Microsoft Entra mohou v závislosti na provedených operacích vyžadovat určitá oprávnění role. K povolení přístupu ke čtení a zápisu k zařízení a modulovým dvojčatům služby IoT Hub je například vyžadován IoT Hub Twin Contributor. Další informace najdete v tématu Řízení přístupu k IoT Hubu s využitím přiřazení rolí Azure RBAC.
Další informace o nastavení aplikace Microsoft Entra najdete v tématu Rychlý start: Registrace aplikace na platformě Microsoft Identity Platform.
Ověřování pomocí DefaultAzureCredential
Nejjednodušší způsob, jak použít Microsoft Entra pro autentizaci backend aplikace, je využít DefaultAzureCredential. Nicméně, v produkčním prostředí se doporučuje využít jiný způsob, včetně specifického TokenCredential nebo zjednodušené verze ChainedTokenCredential. Pro zjednodušení popisuje tato část ověřování pomocí DefaultAzureCredential a tajný klíč klienta.
Další informace o výhodách a nevýhodách použití DefaultAzureCredentialnajdete v řetězcích přihlašovacích údajů v klientské knihovně Azure Identity pro JavaScript.
DefaultAzureCredential podporuje různé mechanismy ověřování a určuje odpovídající typ přihlašovacích údajů na základě prostředí, ve které se provádí. Pokusí se použít více typů přihlašovacích údajů v pořadí, dokud nenajde funkční přihlašovací údaje.
Microsoft Entra vyžaduje tento balíček:
npm install --save @azure/identity
V tomto příkladu byly do proměnných prostředí přidány tajný klíč klienta z registrace aplikace Microsoft Entra, ID klienta a ID tenanta. Tyto proměnné prostředí používá DefaultAzureCredential k autentizaci aplikace. Výsledkem úspěšného ověřování Microsoft Entra je zabezpečený tokenový přihlašovací údaj, který je předán do metody připojení IoT Hubu.
import { DefaultAzureCredential } from "@azure/identity";
// Azure SDK clients accept the credential as a parameter
const credential = new DefaultAzureCredential();
Výsledný token přihlašovacích údajů se pak dá předat funkci fromTokenCredential pro připojení ke službě IoT Hub pro libovolného klienta sady SDK, který přijímá přihlašovací údaje Microsoft Entra.
fromTokenCredential vyžaduje dva parametry:
- Adresa URL služby Azure – Adresa URL služby Azure by měla být ve formátu
{Your Entra domain URL}.azure-devices.netbez předponyhttps://. NapříkladMyAzureDomain.azure-devices.net. - Token přihlašovacích údajů Azure
V tomto příkladu se přihlašovací údaje Azure získávají pomocí DefaultAzureCredential. Adresa URL domény Azure a přihlašovací údaje jsou pak předány Registry.fromTokenCredential k navázání připojení ke službě IoT Hub.
const { DefaultAzureCredential } = require("@azure/identity");
let Registry = require('azure-iothub').Registry;
// Define the client secret values
clientSecretValue = 'xxxxxxxxxxxxxxx'
clientID = 'xxxxxxxxxxxxxx'
tenantID = 'xxxxxxxxxxxxx'
// Set environment variables
process.env['AZURE_CLIENT_SECRET'] = clientSecretValue;
process.env['AZURE_CLIENT_ID'] = clientID;
process.env['AZURE_TENANT_ID'] = tenantID;
// Acquire a credential object
const credential = new DefaultAzureCredential()
// Create an instance of the IoTHub registry
hostName = 'MyAzureDomain.azure-devices.net';
let registry = Registry.fromTokenCredential(hostName,credential);
Ukázky kódu
Pracovní ukázky ověřování služby Microsoft Entra najdete v příkladech identit Azure.
Vyvolání metody v zařízení
Pomocí invokeDeviceMethod spusťte přímou metodu na zařízení podle jejího názvu. Parametr názvu metody identifikuje přímou metodu.
Tento příklad volá metodu "reboot", která zahájí restartování v zařízení. Metoda "reboot" je namapována na funkci obslužné rutiny zpětného volání na zařízení, jak je popsáno v části Vytvoření přímé metody zpětného volání v tomto článku.
var startRebootDevice = function(deviceToReboot) {
var methodName = "reboot";
var methodParams = {
methodName: methodName,
payload: null,
timeoutInSeconds: 30
};
client.invokeDeviceMethod(deviceToReboot, methodParams, function(err, result) {
if (err) {
console.error("Direct method error: "+err.message);
} else {
console.log("Successfully invoked the device to reboot.");
}
});
};
Ukázky služeb sady SDK
Sada Azure IoT SDK pro Node.js poskytuje funkční ukázky aplikací služeb, které zpracovávají úlohy správy zařízení. Další informace naleznete v tématu: