Začínáme se správou zařízení
Back-endové aplikace můžou používat primitiva služby Azure IoT Hub, jako jsou dvojčata zařízení a přímé metody, ke vzdálenému spuš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 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 Služby IoT Hub úrovně Basic a Standard/Free najdete v tématu Volba správné úrovně IoT Hubu pro vaše řešení.
Poznámka:
Tento článek je určený k doplnění ukázek sad SDK Azure IoT, na které odkazuje tento článek. Nástroje sady SDK můžete použít k sestavení zařízení i back-endových aplikací.
Požadavky
Služba IoT Hub
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 kód aplikace zařízení a back-endové služby pro přímé zprávy zařízení.
Vytvoření aplikace zařízení
Tato část popisuje, jak pomocí kódu aplikace zařízení vytvořit naslouchací proces zpětného volání přímé metody.
Požadované balíčky NuGet 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 Zabezpečení osvědčených postupů > zabezpečení připojení.
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 CreateFromConnectionString
transportních protokolů TransportType podporuje následující přenosové protokoly:
Mqtt
Mqtt_WebSocket_Only
Mqtt_Tcp_Only
Amqp
Amqp_WebSocket_Only
Amqp_Tcp_Only
Http1
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.
DeviceAuthenticationWithX509Certificate
je předán jako druhý parametr (DeviceClient.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 auth
DeviceAuthenticationWithX509Certificate
, 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ě. Slouží Environment.GetEnvironmentVariable("HOSTNAME")
například ke čtení proměnné prostředí názvu 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ření naslouchacího procesu zpětného volání přímé metody
K inicializaci naslouchacího procesu zpětného volání přímé metody použijte SetMethodHandlerAsync . Naslouchací proces je přidružený k klíčovému slovu názvu metody, například k restartování. 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 při volání názvu přímé metody restartování.
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);
}
Když budeme pokračovat v příkladu onReboot
, metoda zpětného volání 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ý balíček NuGet služby
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í 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 CreateFromConnectionString
zadejte 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 se předá 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ý klíč klienta
- Certifikát
- Přihlašovací údaje federované identity
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 dvojčatům modulů služby IoT Hub je například potřeba přispěvatel dvojčete služby IoT Hub. Další informace najdete v tématu Správa přístupu ke službě IoT Hub pomocí přiřazení role 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 k ověření back-endové aplikace, je použít DefaultAzureCredential, ale doporučuje se použít jinou metodu v produkčním prostředí, včetně konkrétní TokenCredential
nebo pared-down 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í DefaultAzureCredential
pro 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řidá tajný klíč klienta registrace aplikace Microsoft Entra, ID klienta a ID tenanta. Tyto proměnné prostředí se používají DefaultAzureCredential
k ověření aplikace. Výsledkem úspěšného ověřování Microsoft Entra je přihlašovací údaje tokenu zabezpečení předávané metodě 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 TokenCredential
se předá objekt ServiceClient.Create
připojení ServiceClient k vytvoření objektu připojení ServiceClient .
string hostname = "xxxxxxxxxx.azure-devices.net";
using var serviceClient = ServiceClient.Create(hostname, tokenCredential, TransportType.Amqp);
V tomto příkladu TokenCredential
se předá k RegistryManager.Create
vytvoření objektu RegistryManager .
string hostname = "xxxxxxxxxx.azure-devices.net";
registryManager = RegistryManager.Create(hostname, tokenCredential);
Ukázka kódu
Funkční ukázka ověřování služby Microsoft Entra najdete v ukázce ověřování na základě rolí.
Vyvolání metody v zařízení
Vyvolání metody na zařízení:
- Vytvořte objekt CloudToDeviceMethod . Jako parametr předejte název přímé metody zařízení.
- Volání InvokeDeviceMethodAsync vyvolat metodu na zařízení.
Tento příklad volá metodu "reboot", která zahájí restartování v zařízení. Metoda "reboot" je namapována na naslouchací proces na zařízení, jak je popsáno v části Vytvoření naslouchacího procesu zpětného volání přímé 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 Sadu 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 back-endové 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 naslouchací proces zpětného volání přímé metody.
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 Zabezpečení osvědčených postupů > zabezpečení připojení.
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 Zabezpečení osvědčených postupů > zabezpečení připojení.
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
DeviceClient
př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.
SSLContext
Přidejte informace do objektu ClientOptions.- Pomocí informací zavolejte DeviceClient
ClientOptions
a vytvořte připojení typu device-to-IoT Hub.
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ě. Slouží Environment.GetEnvironmentVariable("PUBLICKEY")
například ke čtení proměnné prostředí řetězce 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ření naslouchacího procesu zpětného volání přímé metody
K inicializaci naslouchacího procesu 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.
Naslouchací proces by měl volat DirectMethodResponse k odeslání potvrzení odpovědi metody volající 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 tématu 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í 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 se předá 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í v sadě Java SDK najdete v tématu Ověřování Azure s využitím 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ý klíč klienta
- Certifikát
- Přihlašovací údaje federované identity
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 dvojčatům modulů služby IoT Hub je například potřeba přispěvatel dvojčete služby IoT Hub. Další informace najdete v tématu Správa přístupu ke službě IoT Hub pomocí přiřazení role 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 k ověření back-endové aplikace, je použít DefaultAzureCredential, ale doporučuje se použít jinou metodu v produkčním prostředí, včetně konkrétní TokenCredential
nebo pared-down ChainedTokenCredential
.
Další informace o výhodách a nevýhodách použití DefaultAzureCredential
najdete 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 id tenanta tajného klíče klienta, ID klienta a hodnoty tajných kódů klienta, jako jsou proměnné prostředí. Po vytvoření ho TokenCredential
předejte ServiceClient nebo jinému tvůrci 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 přihlašovací údaje tokenu zabezpečení předávané 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 do proměnných prostředí přidány hodnoty klienta registrace aplikace Microsoft Entra, ID klienta a ID tenanta. Tyto proměnné prostředí se používají ClientSecretCredentialBuilder
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
- ClientAssertionCredential
- ClientCertificateCredential
- 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í
Volání DeviceMethod.invoke vyvolat metodu na zařízení a vrátit stav výsledku.
Parametr invoke
datové části je volitelný. Použijte null
, pokud není zadána žádná datová část. Parametr datové části může mít různé datové formuláře, včetně řetězce, bajtového pole 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í proces na zařízení, jak je popsáno v části Vytvoření naslouchacího procesu zpětného volání přímé 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í. Po zobrazení výzvy v průběhu instalace nezapomeňte přidat Python do proměnné prostředí pro konkrétní platformu.
Přehled
Tento článek popisuje, jak pomocí sady Azure IoT SDK pro Python vytvořit kód aplikace zařízení a back-endové služby pro přímé metody 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 naslouchací proces zpětného volání přímé metody.
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 Zabezpečení osvědčených postupů > zabezpečení připojení.
Ověřování pomocí sdíleného přístupového klíče
Pomocí create_from_connection_string připojte aplikaci k zařízení pomocí připojovací řetězec 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
- Volání připojení 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ě. Slouží os.getenv("HOSTNAME")
například ke čtení proměnné prostředí názvu 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čí ve scénářích centra Async.
Vytvoření zpětného volání přímé metody
Pomocí on_method_request_received vytvořte funkci obslužné rutiny nebo korutinu, která se volá při přijetí přímé metody. Naslouchací proces je přidružený k klíčovému slovu názvu metody, například k restartování. 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 odeslat 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 method_request_handler
metoda zpětného volání implementuje přímou metodu na zařízení. Kód se spustí při volání přímé metody rebootDevice z aplikace služby. Volání metody send_method_response
pro odeslání potvrzení 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 Přijmout přímou metodu.
Vytvoření back-endové aplikace
Tato část popisuje, jak pomocí aplikace back-endové služby volat 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í ke službě Iot Hub, odesílání přímých metod cloud-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í 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_string
zadejte 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 se předá 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ý klíč klienta
- Certifikát
- Přihlašovací údaje federované identity
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 dvojčatům modulů služby IoT Hub je například potřeba přispěvatel dvojčete služby IoT Hub. Další informace najdete v tématu Správa přístupu ke službě IoT Hub pomocí přiřazení role 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 k ověření back-endové aplikace, je použít DefaultAzureCredential, ale doporučuje se použít jinou metodu v produkčním prostředí, včetně konkrétní TokenCredential
nebo pared-down 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í DefaultAzureCredential
najdete 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 se do proměnných prostředí přidal tajný klíč klienta registrace aplikace Microsoft Entra, ID klienta a ID tenanta. Tyto proměnné prostředí se používají DefaultAzureCredential
k ověření aplikace. Výsledkem úspěšného ověřování Microsoft Entra je přihlašovací údaje tokenu zabezpečení předávané metodě 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 ke službě 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.net
bez 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
. Adresu URL a přihlašovací údaje služby Azure se pak zadají k IoTHubRegistryManager.from_token_credential
vytvoření 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. V následujícím a předchozím příkladu zařízení zobrazeném v části Vytvoření zpětného volání přímé metody je název přímé metody "rebootDevice".
Volání přímé metody na zařízení:
- Vytvořte objekt CloudToDeviceMethod . Jako parametry zadejte název metody a datovou část.
- Voláním invoke_device_method vyvoláte přímou metodu na zařízení. Jako parametry zadejte ID zařízení a
CloudToDeviceMethod
objekt 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 pro Node.js vytvořit kód aplikace zařízení a back-endové 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 zařízení azure-iot-device obsahuje objekty, které jsou 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 Zabezpečení osvědčených postupů > zabezpečení připojení.
Ověřování pomocí certifikátu X.509
Certifikát X.509 je připojený k přenosu připojení typu device-to-IoT Hub.
Konfigurace připojení typu device-to-IoT Hub pomocí certifikátu X.509:
Voláním zConnectionString přidejte modul zařízení nebo identity připojovací řetězec a typ přenosu do objektu
Client
. Přidejtex509=true
do připojovací řetězec, aby bylo možné označit, že se doDeviceClientOptions
souboru přidá certifikát. Příklad:Připojovací řetězec zařízení:
HostName=xxxxx.azure-devices.net;DeviceId=Device-1;SharedAccessKey=xxxxxxxxxxxxx;x509=true
Modul identity připojovací řetězec:
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.
Volání setOptions pro přidání certifikátu a klíče X.509 (a volitelně i přístupového hesla) do přenosu 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 clientOptions
certifikace 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
Funkční ukázka ověřování certifikátu X.509 zařízení najdete v tématu Jednoduché ukázkové 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íHttp
Client
instance kontroluje zprávy ze služby IoT Hub zřídka (minimálně každých 25 minut).Mqtt
MqttWs
AmqpWs
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řidání připojovací řetězec zařízení a přenosového protokolu
Volání zConnectionString pro zadání parametrů připojení zařízení:
- connStr - zařízení připojovací řetězec.
- 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ření zpětného volání přímé metody
Volání onDeviceMethod vytvořit funkci obslužné rutiny zpětného volání nebo korutinu, která je volána při přijetí přímé metody. Naslouchací proces je přidružený k klíčovému slovu názvu metody, například k restartování. 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
zprávu o potvrzení odpovědi volající aplikaci.
Tento příklad nastaví obslužnou rutinu přímé metody s názvem onReboot
, která se volá při použití názvu přímé metody "reboot".
client.onDeviceMethod('reboot', onReboot);
V tomto příkladu onReboot
metoda zpětného volání implementuje přímou metodu na zařízení. Kód se spustí při volání přímé metody "reboot" z aplikace služby. Volání funkce response.send
, která 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í.
Instalace balíčku sady 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í 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 CreateFromConnectionString
zadejte zásady sdíleného přístupu služby připojovací řetězec. 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 se předá 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ý klíč klienta
- Certifikát
- Přihlašovací údaje federované identity
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 dvojčatům modulů služby IoT Hub je například potřeba přispěvatel dvojčete služby IoT Hub. Další informace najdete v tématu Správa přístupu ke službě IoT Hub pomocí přiřazení role 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 k ověření back-endové aplikace, je použít DefaultAzureCredential, ale doporučuje se použít jinou metodu v produkčním prostředí, včetně konkrétní TokenCredential
nebo pared-down 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í DefaultAzureCredential
najdete 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 se do proměnných prostředí přidal tajný klíč klienta registrace aplikace Microsoft Entra, ID klienta a ID tenanta. Tyto proměnné prostředí se používají DefaultAzureCredential
k ověření aplikace. Výsledkem úspěšného ověřování Microsoft Entra je přihlašovací údaje tokenu zabezpečení předávané metodě 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 zTokenCredential 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.net
bez 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 se pak zadají k Registry.fromTokenCredential
vytvoření 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 vyvolat přímou metodu podle názvu na zařízení. 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í zpětného volání přímé metody 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: