IoT Hub modül kimliklerini ve modül kimlik ikizlerini kullanmaya başlama
Modül kimlikleri ve modül kimliği ikizleri, Azure IoT Hub cihaz kimliklerine ve cihaz ikizlerine benzer, ancak daha ayrıntılı bir ayrıntı sağlar. Azure IoT Hub cihaz kimlikleri ve cihaz ikizleri arka uç uygulamasının bir cihazı yapılandırmasına ve cihazın koşullarına görünürlük sağlamasına olanak tanırken, modül kimliği ve modül kimlik ikizi bir cihazın tek tek bileşenleri için bu özellikleri sağlar. İşletim sistemi cihazları veya üretici yazılımı cihazları gibi birden çok bileşeni olan yetenekli cihazlarda modül kimlikleri ve modül kimlik ikizleri, her bileşen için yalıtılmış yapılandırma ve koşullar sağlar. Daha fazla bilgi için bkz . Azure IoT Hub modül ikizlerini anlama.
Not
Bu makalede açıklanan özellikler yalnızca IoT Hub'ın standart katmanında kullanılabilir. Temel ve standart/ücretsiz IoT Hub katmanları hakkında daha fazla bilgi için bkz. Çözümünüz için doğru IoT Hub katmanını seçme.
Bu makalede iki tür uygulama geliştirme gösterilmektedir:
- Modül kimlik ikizlerini görüntüleyen ve güncelleştiren cihaz uygulamaları bildirilen özellikleri ve istenen özellikleri güncelleştirmek için istekleri işler.
- Modül kimliği istenen özellikleri okuyabilen ve ayarlayabilen hizmet uygulamaları.
Not
Bu makale, bu makalenin içinden başvuruda yer alan Azure IoT SDK'ları örneklerini tamamlamaya yöneliktir. Sdk araçlarını kullanarak hem cihaz hem de arka uç uygulamaları oluşturabilirsiniz.
Önkoşullar
IoT hub'ı
IoT hub cihazı
IoT hub cihaz modülü kimliği
Uygulamanız MQTT protokolunu kullanıyorsa, güvenlik duvarınızda 8883 numaralı bağlantı noktasının açık olduğundan emin olun. MQTT protokolü 8883 numaralı bağlantı noktası üzerinden iletişim kurar. Bu bağlantı noktası bazı kurumsal ve eğitim ağı ortamlarında engellenebilir. Bu sorunu çözmenin daha fazla bilgi ve yolları için bkz . IoT Hub'a (MQTT) Bağlanma.
- Visual Studio gerektirir
Genel bakış
Bu makalede, modül kimlik ikizleri için cihaz ve arka uç hizmet uygulama kodu oluşturmak üzere .NET için Azure IoT SDK'sının nasıl kullanılacağı açıklanmaktadır.
Cihaz uygulaması oluşturma
Bu bölümde, cihaz uygulama kodunun nasıl kullanılacağı açıklanır:
- Modül kimlik ikizlerini alma ve bildirilen özellikleri inceleme
- Bildirilen modül kimliği ikizi özelliklerini güncelleştirme
- Modül istenen özellik güncelleştirme geri çağırma işleyicisi oluşturma
Önemli
Bu makale, simetrik anahtar kimlik doğrulaması olarak da adlandırılan paylaşılan erişim imzasını kullanarak bir cihazı bağlama adımlarını içerir. Bu kimlik doğrulama yöntemi test ve değerlendirme için uygundur, ancak X.509 sertifikalarını kullanarak bir cihazın kimliğini doğrulamak daha güvenli bir yaklaşımdır. Daha fazla bilgi edinmek için bkz . En iyi güvenlik yöntemleri > Bağlantı güvenliği.
Gerekli cihaz NuGet paketi
C# dilinde yazılan cihaz istemci uygulamaları Için Microsoft.Azure.Devices.Client NuGet paketi gerekir.
Cihaz kitaplığını kullanmak için bu using
deyimleri ekleyin.
using Microsoft.Azure.Devices.Client;
using Microsoft.Azure.Devices.Shared;
Bir cihaza bağlanma
ModuleClient sınıfı, cihazdan modül kimlik ikizleriyle etkileşime geçmek için gereken tüm yöntemleri kullanıma sunar.
Modül kimliği bağlantı dizesi CreateFromConnectionString yöntemini kullanarak cihaza bağlanın.
Aktarım parametresi olmadan çağrılması CreateFromConnectionString
, varsayılan AMQP aktarımı kullanılarak bağlanır.
Bu örnek, varsayılan AMQP aktarımını kullanarak cihaza bağlanır.
static string ModuleConnectionString = "{Device module identity connection string}";
private static ModuleClient _moduleClient = null;
_moduleClient = ModuleClient.CreateFromConnectionString(ModuleConnectionString, null);
Not
C#/.NET, bir cihaz uygulamasının sertifika kullanarak IoT Hub modülü kimlik ikizine bağlanmasını desteklemez.
Modül kimlik ikizlerini alma ve özellikleri inceleme
Geçerli modül kimlik ikizi özelliklerini bir twin nesnesine almak için GetTwinAsync'i çağırın.
Bu örnek, modül kimlik ikizi özelliklerini JSON biçiminde alır ve görüntüler.
Console.WriteLine("Retrieving twin...");
Twin twin = await _moduleClient.GetTwinAsync();
Console.WriteLine("\tModule identity twin value received:");
Console.WriteLine(JsonConvert.SerializeObject(twin.Properties));
Modül kimliği ikizi bildirilen özellikleri güncelleştirme
İkiz bildirilen özelliğini güncelleştirmek için:
- Bildirilen özellik güncelleştirmesi için TwinCollection nesnesi oluşturma
- Nesne içinde
TwinCollection
bildirilen bir veya daha fazla özelliği güncelleştirme - Bildirilen özellik değişikliklerini IoT hub hizmetine göndermek için UpdateReportedPropertiesAsync kullanın
Örneğin:
try
{
Console.WriteLine("Sending sample start time as reported property");
TwinCollection reportedProperties = new TwinCollection();
reportedProperties["DateTimeLastAppLaunch"] = DateTime.UtcNow;
await _moduleClient.UpdateReportedPropertiesAsync(reportedProperties);
}
catch (Exception ex)
{
Console.WriteLine();
Console.WriteLine("Error in sample: {0}", ex.Message);
}
İstenen özellik güncelleştirme geri çağırma işleyicisi oluşturma
Modül kimlik ikizinde istenen özellik değiştirildiğinde yürütülen istenen bir özellik güncelleştirme geri çağırma işleyicisi oluşturmak için geri çağırma işleyicisi yönteminin adını SetDesiredPropertyUpdateCallbackAsync'e geçirin.
Örneğin, bu çağrı istenen modül özelliği değiştirildiğinde adlı OnDesiredPropertyChangedAsync
bir yöntemi bildirmek için sistemi ayarlar.
await _moduleClient.SetDesiredPropertyUpdateCallbackAsync(OnDesiredPropertyChangedAsync, null);
Modül kimlik ikizi özellikleri, geri çağırma yöntemine TwinCollection olarak geçirilir ve yapılar olarak KeyValuePair
incelenebilir.
Bu örnek, istenen özellik güncelleştirmelerini olarak TwinCollection
alır ve ardından döngüye girip koleksiyon güncelleştirmelerini yazdırır KeyValuePair
. Koleksiyonda KeyValuePair
döngü yaptıktan sonra kod, bildirilen özelliği güncelleştirmek DateTimeLastDesiredPropertyChangeReceived
için son güncelleştirme saatini güncel tutmak için çağırırUpdateReportedPropertiesAsync
.
private async Task OnDesiredPropertyChangedAsync(TwinCollection desiredProperties, object userContext)
{
var reportedProperties = new TwinCollection();
Console.WriteLine("\tDesired properties requested:");
Console.WriteLine($"\t{desiredProperties.ToJson()}");
// For the purpose of this sample, we'll blindly accept all twin property write requests.
foreach (KeyValuePair<string, object> desiredProperty in desiredProperties)
{
Console.WriteLine($"Setting {desiredProperty.Key} to {desiredProperty.Value}.");
reportedProperties[desiredProperty.Key] = desiredProperty.Value;
}
Console.WriteLine("\tAlso setting current time as reported property");
reportedProperties["DateTimeLastDesiredPropertyChangeReceived"] = DateTime.UtcNow;
await _moduleClient.UpdateReportedPropertiesAsync(reportedProperties);
}
SDK modülü örneği
.NET için Azure IoT SDK'sı, modül kimlik çifti görevlerini işleyen cihaz uygulamalarının çalışma örneklerini sağlar. Daha fazla bilgi için bkz.
Arka uç uygulaması oluşturma
Bu bölümde modül kimlik alanlarının nasıl okunduğu ve güncelleştirildiği açıklanır.
RegistryManager sınıfı, hizmetten modül kimlik ikizleriyle etkileşim kurmak için bir arka uç uygulaması oluşturmak için gereken tüm yöntemleri kullanıma sunar.
Gerekli hizmet NuGet paketi
Arka uç hizmet uygulamaları Için Microsoft.Azure.Devices NuGet paketi gerekir.
Hizmet kitaplığını kullanmak için bu using
deyimleri ekleyin.
using Microsoft.Azure.Devices;
using Microsoft.Azure.Devices.Shared;
IoT Hub'a bağlanma
Aşağıdaki yöntemleri kullanarak bir arka uç hizmetini IoT Hub'a bağlayabilirsiniz:
- Paylaşılan erişim ilkesi
- Microsoft Entra
Önemli
Bu makale, paylaşılan erişim imzası kullanarak hizmete bağlanma adımlarını içerir. Bu kimlik doğrulama yöntemi test ve değerlendirme için uygundur, ancak Microsoft Entra ID veya yönetilen kimliklerle bir hizmette kimlik doğrulaması yapmak daha güvenli bir yaklaşımdır. Daha fazla bilgi edinmek için bkz . En iyi güvenlik yöntemleri > Bulut güvenliği.
Paylaşılan erişim ilkesi kullanarak bağlanma
CreateFromConnectionString kullanarak bir arka uç uygulamasını IoT hub'ına bağlayın.
UpdateModuleAsync
Bu bölümde kullanılan yöntem, bir modüle istenen özellikleri eklemek için Service Connect paylaşılan erişim ilkesi izni gerektirir. parametresi CreateFromConnectionString
olarak, Service Connect izni içeren bir paylaşılan erişim ilkesi bağlantı dizesi sağlayın. Paylaşılan erişim ilkeleri hakkında daha fazla bilgi için bkz . Paylaşılan erişim imzalarıyla IoT Hub'a erişimi denetleme.
Örneğin:
static RegistryManager registryManager;
static string connectionString = "{IoT hub shared access policy connection string}";
registryManager = RegistryManager.CreateFromConnectionString(connectionString);
Microsoft Entra kullanarak bağlanma
Microsoft Entra kullanan bir arka uç uygulamasının IoT Hub'a bağlanmadan önce başarıyla kimlik doğrulaması yapması ve güvenlik belirteci kimlik bilgilerini alması gerekir. Bu belirteç bir IoT Hub bağlantı yöntemine geçirilir. IoT Hub için Microsoft Entra'yı ayarlama ve kullanma hakkında genel bilgi için bkz . Microsoft Entra Id kullanarak IoT Hub'a erişimi denetleme.
Microsoft Entra uygulamasını yapılandırma
Tercih ettiğiniz kimlik doğrulaması kimlik bilgileri için yapılandırılmış bir Microsoft Entra uygulaması ayarlamanız gerekir. Uygulama, arka uç uygulaması tarafından kimlik doğrulaması için kullanılan gizli dizi gibi parametreler içerir. Kullanılabilir uygulama kimlik doğrulaması yapılandırmaları şunlardır:
- İstemci gizli anahtarı
- Sertifika
- Federasyon kimliği kimlik bilgileri
Microsoft Entra uygulamaları, gerçekleştirilen işlemlere bağlı olarak belirli rol izinleri gerektirebilir. Örneğin, IoT Hub cihazına ve modül ikizlerine okuma ve yazma erişimini etkinleştirmek için IoT Hub İkizi Katkıda Bulunanı gereklidir. Daha fazla bilgi için bkz . Azure RBAC rol atamasını kullanarak IoT Hub erişimini yönetme.
Microsoft Entra uygulamasını ayarlama hakkında daha fazla bilgi için bkz. Hızlı Başlangıç: Microsoft kimlik platformu ile uygulama kaydetme.
DefaultAzureCredential kullanarak kimlik doğrulaması
Arka uç uygulamasının kimliğini doğrulamak için Microsoft Entra kullanmanın en kolay yolu DefaultAzureCredential kullanmaktır, ancak üretim ortamında belirli TokenCredential
veya ayrıştırılmış ChainedTokenCredential
bir dahil olmak üzere farklı bir yöntem kullanılması önerilir. Kolaylık olması için, bu bölümde kullanarak DefaultAzureCredential
kimlik doğrulaması ve İstemci gizli dizisi açıklanmaktadır. kullanmanın DefaultAzureCredential
avantajları ve dezavantajları hakkında daha fazla bilgi için bkz . DefaultAzureCredential için kullanım kılavuzu.
DefaultAzureCredential
farklı kimlik doğrulama mekanizmalarını destekler ve yürütülmekte olduğu ortama göre uygun kimlik bilgisi türünü belirler. Çalışan bir kimlik bilgisi bulana kadar sırayla birden çok kimlik bilgisi türü kullanmayı dener.
Microsoft Entra, bu NuGet paketlerini ve bunlara karşılık gelen using
deyimleri gerektirir:
- Azure.Core
- Azure.Identity
using Azure.Core;
using Azure.Identity;
Bu örnekte, Microsoft Entra uygulama kaydı istemci gizli dizisi, istemci kimliği ve kiracı kimliği ortam değişkenlerine eklenir. Bu ortam değişkenleri tarafından DefaultAzureCredential
uygulamanın kimliğini doğrulamak için kullanılır. Başarılı bir Microsoft Entra kimlik doğrulamasının sonucu, IoT Hub bağlantı yöntemine geçirilen bir güvenlik belirteci kimlik bilgisidir.
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();
Sonuçta elde edilen TokenCredential , Microsoft Entra kimlik bilgilerini kabul eden herhangi bir SDK istemcisi için IoT Hub'a bağlanma yöntemine geçirilebilir:
Bu örnekte, TokenCredential
bir ServiceClient bağlantı nesnesi oluşturmak için öğesine geçirilir ServiceClient.Create
.
string hostname = "xxxxxxxxxx.azure-devices.net";
using var serviceClient = ServiceClient.Create(hostname, tokenCredential, TransportType.Amqp);
Bu örnekte, TokenCredential
bir RegistryManager nesnesi oluşturmak için öğesine geçirilirRegistryManager.Create
.
string hostname = "xxxxxxxxxx.azure-devices.net";
registryManager = RegistryManager.Create(hostname, tokenCredential);
Kod örneği
Microsoft Entra hizmeti kimlik doğrulamasının çalışan bir örneği için bkz . Rol tabanlı kimlik doğrulama örneği.
Modül kimliği alanlarını okuma ve güncelleştirme
Geçerli modül kimliği ikiz alanlarını bir Module nesnesine almak için GetModuleAsync'i çağır.
sınıfı, Module
modül kimlik ikizinin bölümlerine karşılık gelen öğesini içerir properties
. Modül kimlik ikizi alanlarını görüntülemek ve güncelleştirmek için Modül sınıfı özelliklerini kullanın. kullanarak cihazda UpdateModuleAsync
güncelleştirmeleri yazmadan önce birden çok alanı güncelleştirmek için nesne özelliklerini kullanabilirsinizModule
.
Modül kimlik ikizi alan güncelleştirmelerini yaptıktan sonra, nesne alanı güncelleştirmelerini bir cihaza geri yazmak Module
için UpdateModuleAsync'i çağırabilirsiniz. 'den UpdateModuleAsync
hatalı biçimlendirilmiş düzeltme eki hatalarını yakalamak için hata işleyicisi ile birlikte ve catch
mantığını kullanıntry
.
Bu örnek bir Module
nesneye bir modül alır, özelliğini güncelleştirir module
LastActivityTime
ve ardından kullanarak UpdateModuleAsync
IoT Hub'da modülü güncelleştirir.
// Retrieve the module
var module = await registryManager.GetModuleAsync("myDeviceId","myModuleId");
// Update the module object
module.LastActivityTime = DateTime.Now;
// Apply the patch to update the device twin tags section
try
{
await registryManager.UpdateModuleAsync(module);
}
catch (Exception e)
{
console.WriteLine("Module update failed.", e.Message);
}
Diğer modül API'si
- GetModulesOnDeviceAsync - Cihazdaki modül kimliklerini alır
- RemoveModuleAsync - Önceden kaydedilmiş bir modülü cihazdan siler
SDK hizmet örneği
.NET için Azure IoT SDK'sı, modül kimlik ikizi görevlerini işleyen bir hizmet uygulamasının çalışma örneğini sağlar. Daha fazla bilgi için bkz . Registry Manager E2E Testleri.
- Python sürüm 3.7 veya üzeri önerilir. Kurulumunuzun gereksinimine uygun olarak 32 bit veya 64 bit yüklemeyi kullanmaya dikkat edin. Yükleme sırasında istendiğinde, platforma özgü ortam değişkeninize Python’u eklediğinizden emin olun.
Genel bakış
Bu makalede, modül kimlik ikizleri için cihaz ve arka uç hizmeti uygulama kodu oluşturmak üzere Python için Azure IoT SDK'sının nasıl kullanılacağı açıklanmaktadır.
Paketleri yükleme
Cihaz uygulamaları oluşturmak için azure-iot-device kitaplığının yüklenmesi gerekir.
pip install azure-iot-device
Arka uç hizmet uygulamaları oluşturmak için azure-iot-hub kitaplığı yüklenmelidir.
pip install azure-iot-hub
msrest kitaplığı HTTPOperationError özel durumlarını yakalamak için kullanılır.
pip install msrest
Cihaz uygulaması oluşturma
Bu bölümde, cihaz uygulama kodunun nasıl kullanılacağı açıklanır:
- Modül kimlik ikizlerini alma ve bildirilen özellikleri inceleme
- Modül kimliği ikizi bildirilen özellikleri güncelleştirme
- Modül kimliği ikizi istenen özellik güncelleştirme geri çağırma işleyicisi oluşturma
Önemli
Bu makale, simetrik anahtar kimlik doğrulaması olarak da adlandırılan paylaşılan erişim imzasını kullanarak bir cihazı bağlama adımlarını içerir. Bu kimlik doğrulama yöntemi test ve değerlendirme için uygundur, ancak X.509 sertifikalarını kullanarak bir cihazın kimliğini doğrulamak daha güvenli bir yaklaşımdır. Daha fazla bilgi edinmek için bkz . En iyi güvenlik yöntemleri > Bağlantı güvenliği.
deyimlerini içeri aktarma
Cihaz kitaplığını kullanmak için bu import
deyimi ekleyin.
# import the device client library
import asyncio
from azure.iot.device.aio import IoTHubDeviceClient
Bir cihaza bağlanma
IoTHubModuleClient sınıfı, modül kimlik ikizleriyle çalışmak için kullanılabilecek yöntemler içerir.
Bir uygulamayı bir cihaza bağlamak için:
- Modül kimliğini eklemek için create_from_connection_string bağlantı dizesi çağırın
- Cihaz istemcisini bir Azure IoT hub'ına bağlamak için connect çağrısı yapma
# import the device client library
import asyncio
from azure.iot.device.aio import IoTHubDeviceClient
# substitute the device connection string in conn_str
# and add it to the IoTHubDeviceClient object
conn_str = "{Device module identity connection string}"
device_client = IoTHubDeviceClient.create_from_connection_string(conn_str)
# connect the application to the device
await device_client.connect()
Not
Python, bir cihaz uygulamasının sertifika kullanarak IoT Hub modülü kimlik ikizine bağlanmasını desteklemez.
Modül kimlik ikizlerini alma ve özellikleri inceleme
Azure IoT Hub hizmetinden modül kimlik ikizini almak için get_twin çağırın. İkiz bilgileri, incelenebilen bir değişkene yerleştirilir.
Bu örnek, cihaz ikizini alır ve JSON biçiminde cihaz ikizini görüntülemek için komutunu kullanır print
.
# get the twin
twin = await device_client.get_twin()
print("Twin document:")
print("{}".format(twin))
Modül kimliği ikizi bildirilen özellikleri güncelleştirme
JSON biçiminde modül kimlik çifti bildirilen özelliklerini güncelleştirmek için bir düzeltme eki uygulayabilirsiniz.
Bildirilen özellikleri güncelleştirmek üzere bir düzeltme eki uygulamak için:
- Bir değişkene bildirilen bir özellik JSON düzeltme eki atayın.
- Bildirilen özelliklere JSON düzeltme ekini uygulamak için patch_twin_reported_properties çağırın.
Örneğin:
# create the reported properties patch
reported_properties = {"temperature": random.randint(320, 800) / 10}
print("Setting reported temperature to {}".format(reported_properties["temperature"]))
# update the reported properties and wait for the result
await device_client.patch_twin_reported_properties(reported_properties)
Modül kimliği ikizi istenen özellik güncelleştirme geri çağırma işleyicisi oluşturma
Modül kimliği ikizi istenen özellikler düzeltme eki alındığında çağrılan bir işleyici işlevi veya coroutine oluşturmak için on_twin_desired_properties_patch_received çağrısı yapın. İşleyici, JSON sözlük nesnesi biçiminde ikiz yaması olan bir bağımsız değişken alır.
Bu örnek, adlı twin_patch_handler
istenen özellikler düzeltme eki işleyicisini ayarlar.
Örneğin:
try:
# Set handlers on the client
device_client.on_twin_desired_properties_patch_received = twin_patch_handler
except:
# Clean up in the event of failure
client.shutdown()
JSON twin_patch_handler
istenen özellik güncelleştirmelerini alır ve yazdırır.
# Define behavior for receiving twin desired property patches
def twin_patch_handler(twin_patch):
print("Twin patch received:")
print(twin_patch)
SDK cihaz örnekleri
Python için Azure IoT SDK'sı, modül kimlik ikizi görevlerini işleyen çalışan bir cihaz uygulaması örneği sağlar:
- get_twin - Bir cihaza bağlanın ve ikiz bilgilerini alın.
- update_twin_reported_properties - İkizi bildirilen özellikleri güncelleştirin.
- receive_twin_desired_properties - İstenen özellikleri alma ve güncelleştirme.
Arka uç uygulaması oluşturma
Bu bölümde, modül kimliği ikizi istenen özelliklerini almak ve güncelleştirmek için bir arka uç uygulamasının nasıl oluşturulacağı açıklanır.
IoTHubRegistryManager sınıfı, hizmetten modül kimlik ikizleriyle etkileşim kurmak için bir arka uç uygulaması oluşturmak için gereken tüm yöntemleri kullanıma sunar.
Hizmet içeri aktarma deyimleri
Hizmet kitaplığını kullanmak için bu import
deyimi ekleyin.
import sys
from azure.iot.hub import IoTHubRegistryManager
from azure.iot.hub.models import Twin, TwinProperties, QuerySpecification, QueryResult
IoT hub'ına bağlanma
Aşağıdaki yöntemleri kullanarak bir arka uç hizmetini IoT Hub'a bağlayabilirsiniz:
- Paylaşılan erişim ilkesi
- Microsoft Entra
Önemli
Bu makale, paylaşılan erişim imzası kullanarak hizmete bağlanma adımlarını içerir. Bu kimlik doğrulama yöntemi test ve değerlendirme için uygundur, ancak Microsoft Entra ID veya yönetilen kimliklerle bir hizmette kimlik doğrulaması yapmak daha güvenli bir yaklaşımdır. Daha fazla bilgi edinmek için bkz . En iyi güvenlik yöntemleri > Bulut güvenliği.
Paylaşılan erişim ilkesi kullanarak bağlanma
from_connection_string kullanarak IoT hub'ına bağlanın.
update_module_twin
Bu bölümde kullanılan yöntem, bir modüle istenen özellikleri eklemek için Service Connect paylaşılan erişim ilkesi izni gerektirir. parametresi from_connection_string
olarak, Service Connect izni içeren bir paylaşılan erişim ilkesi bağlantı dizesi sağlayın. Paylaşılan erişim ilkeleri hakkında daha fazla bilgi için bkz . Paylaşılan erişim imzalarıyla IoT Hub'a erişimi denetleme.
Örneğin:
# Connect to IoT hub
IOTHUB_CONNECTION_STRING = "{IoT hub shared access policy connection string}"
iothub_registry_manager = IoTHubRegistryManager.from_connection_string(IOTHUB_CONNECTION_STRING)
Microsoft Entra kullanarak bağlanma
Microsoft Entra kullanan bir arka uç uygulamasının IoT Hub'a bağlanmadan önce başarıyla kimlik doğrulaması yapması ve güvenlik belirteci kimlik bilgilerini alması gerekir. Bu belirteç bir IoT Hub bağlantı yöntemine geçirilir. IoT Hub için Microsoft Entra'yı ayarlama ve kullanma hakkında genel bilgi için bkz . Microsoft Entra Id kullanarak IoT Hub'a erişimi denetleme.
Python SDK kimlik doğrulamasına genel bakış için bkz . Python için Azure SDK'sını kullanarak Azure hizmetlerinde Python uygulamalarının kimliğini doğrulama
Microsoft Entra uygulamasını yapılandırma
Tercih ettiğiniz kimlik doğrulaması kimlik bilgileri için yapılandırılmış bir Microsoft Entra uygulaması ayarlamanız gerekir. Uygulama, arka uç uygulaması tarafından kimlik doğrulaması için kullanılan gizli dizi gibi parametreler içerir. Kullanılabilir uygulama kimlik doğrulaması yapılandırmaları şunlardır:
- İstemci gizli anahtarı
- Sertifika
- Federasyon kimliği kimlik bilgileri
Microsoft Entra uygulamaları, gerçekleştirilen işlemlere bağlı olarak belirli rol izinleri gerektirebilir. Örneğin, IoT Hub cihazına ve modül ikizlerine okuma ve yazma erişimini etkinleştirmek için IoT Hub İkizi Katkıda Bulunanı gereklidir. Daha fazla bilgi için bkz . Azure RBAC rol atamasını kullanarak IoT Hub erişimini yönetme.
Microsoft Entra uygulamasını ayarlama hakkında daha fazla bilgi için bkz. Hızlı Başlangıç: Microsoft kimlik platformu ile uygulama kaydetme.
DefaultAzureCredential kullanarak kimlik doğrulaması
Arka uç uygulamasının kimliğini doğrulamak için Microsoft Entra kullanmanın en kolay yolu DefaultAzureCredential kullanmaktır, ancak üretim ortamında belirli TokenCredential
veya ayrıştırılmış ChainedTokenCredential
bir dahil olmak üzere farklı bir yöntem kullanılması önerilir. Kolaylık olması için, bu bölümde kullanarak DefaultAzureCredential
kimlik doğrulaması ve İstemci gizli dizisi açıklanmaktadır. kullanmanın DefaultAzureCredential
avantajları ve dezavantajları hakkında daha fazla bilgi için bkz . Python için Azure Identity istemci kitaplığındaki kimlik bilgileri zincirleri.
DefaultAzureCredential farklı kimlik doğrulama mekanizmalarını destekler ve yürütülmekte olduğu ortama göre uygun kimlik bilgisi türünü belirler. Çalışan bir kimlik bilgisi bulana kadar sırayla birden çok kimlik bilgisi türü kullanmayı dener.
Microsoft Entra bu içeri aktarma paketini ve karşılık gelen import
deyimini gerektirir:
pip install azure-identity
from azure.identity import DefaultAzureCredential
Bu örnekte, Ortam değişkenlerine Microsoft Entra uygulama kaydı istemci gizli dizisi, istemci kimliği ve kiracı kimliği eklenmiştir. Bu ortam değişkenleri tarafından DefaultAzureCredential
uygulamanın kimliğini doğrulamak için kullanılır. Başarılı bir Microsoft Entra kimlik doğrulamasının sonucu, IoT Hub bağlantı yöntemine geçirilen bir güvenlik belirteci kimlik bilgisidir.
from azure.identity import DefaultAzureCredential
credential = DefaultAzureCredential()
Sonuçta elde edilen AccessToken , Microsoft Entra kimlik bilgilerini kabul eden herhangi bir SDK istemcisi için IoT Hub'a bağlanmak üzere öğesine geçirilebilir from_token_credential
:
- Entra belirteci kimlik bilgilerini kullanarak IoT Hub'a hizmet bağlantısı oluşturmak için IoTHubRegistryManager .
- IoTHubJobManager
- DigitalTwinClient
- IoTHubHttpRuntimeManager
- IoTHubConfigurationManager
from_token_credential
iki parametre gerektirir:
- Azure hizmet URL'si - Azure hizmet URL'si ön ek olmadan
https://
biçiminde{Your Entra domain URL}.azure-devices.net
olmalıdır. Örneğin,MyAzureDomain.azure-devices.net
. - Azure kimlik bilgisi belirteci
Bu örnekte Azure kimlik bilgileri kullanılarak DefaultAzureCredential
elde edilir. Ardından, IoT Hub'a IoTHubRegistryManager.from_token_credential
bağlantı oluşturmak için Azure hizmet URL'si ve kimlik bilgileri sağlanır.
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)
Kod örnekleri
Microsoft Entra hizmeti kimlik doğrulamasının çalışma örnekleri için bkz . Python için Microsoft Authentication Library (MSAL).
Modül kimliği ikizi istenen özelliklerini alma ve güncelleştirme
update_module_twin kullanarak bir arka uç uygulamasından istenen özellikleri güncelleştirebilirsiniz.
Modül kimliği ikizi istenen özelliklerini almak ve güncelleştirmek için:
- Modül kimlik ikizinin geçerli sürümünü almak için get_module_twin çağırın.
- JSON biçiminde istenen özellikleri eklemek için twin sınıfını kullanın.
- Düzeltme ekini cihaz ikizi için uygulamak için çağrısı
update_module_twin
yapın. Modül kimlik ikizine yönelik istenen özellikleri ve etiketleri değiştirmek için replace_module_twin de kullanabilirsiniz.
Bu örnek istenen telemetryInterval
özelliği olarak 122
güncelleştirir.
try:
module_twin = iothub_registry_manager.get_module_twin(DEVICE_ID, MODULE_ID)
print ( "" )
print ( "Module identity twin properties before update:" )
print ( "{0}".format(module_twin.properties) )
# Update twin
twin_patch = Twin()
twin_patch.properties = TwinProperties(desired={"telemetryInterval": 122})
updated_module_twin = iothub_registry_manager.update_module_twin(
DEVICE_ID, MODULE_ID, twin_patch, module_twin.etag
)
print ( "" )
print ( "Module identity twin properties after update :" )
print ( "{0}".format(updated_module_twin.properties) )
except Exception as ex:
print ( "Unexpected error {0}".format(ex) )
except KeyboardInterrupt:
print ( "IoTHubRegistryManager sample stopped" )
SDK hizmet örneği
Python için Azure IoT SDK'sı, cihaz kimliği modülü ikiz görevlerini işleyen bir hizmet uygulamasının çalışan bir örneğini sağlar. Daha fazla bilgi için bkz . Test IoTHub Registry Manager.
- Node.js sürüm 10.0.x veya üzerini gerektirir
Genel bakış
Bu makalede, modül kimlik ikizleri için cihaz ve arka uç hizmeti uygulama kodu oluşturmak üzere Node.js için Azure IoT SDK'sının nasıl kullanılacağı açıklanmaktadır.
Cihaz uygulaması oluşturma
Bu bölümde, bir cihaz uygulaması oluşturmak üzere Node.js için Azure IoT SDK'sında azure-iot-device paketinin nasıl kullanılacağı açıklanmaktadır:
- Modül kimlik ikizlerini alma ve bildirilen özellikleri inceleme
- Modül kimliği bildirilen ikiz özelliklerini güncelleştirme
- Modül kimliği ikizi istenen özellik değişiklikleri bildirimini alma
azure-iot-device paketi, IoT cihazlarıyla arabirim oluşturan nesneler içerir.
İkiz sınıfı, ikize özgü nesneleri içerir. Bu bölümde, cihaz modülü kimlik ikizi verilerini okumak ve yazmak için kullanılan sınıf kodu açıklanmaktadır Client
.
SDK paketini yükleme
Geliştirme makinenize azure-iot-device cihaz SDK'sını yüklemek için şu komutu çalıştırın:
npm install azure-iot-device --save
IoT Hub’a cihaz bağlama
Bir cihaz uygulaması aşağıdaki yöntemleri kullanarak IoT Hub ile kimlik doğrulaması yapabilir:
- Paylaşılan erişim anahtarı
- X.509 sertifikası
Önemli
Bu makale, simetrik anahtar kimlik doğrulaması olarak da adlandırılan paylaşılan erişim imzasını kullanarak bir cihazı bağlama adımlarını içerir. Bu kimlik doğrulama yöntemi test ve değerlendirme için uygundur, ancak X.509 sertifikalarını kullanarak bir cihazın kimliğini doğrulamak daha güvenli bir yaklaşımdır. Daha fazla bilgi edinmek için bkz . En iyi güvenlik yöntemleri > Bağlantı güvenliği.
Paylaşılan erişim anahtarı kullanarak kimlik doğrulaması yapma
Aktarım protokolü seçme
Client
nesnesi şu protokolleri destekler:
Amqp
-
Http
- kullanılırkenHttp
Client
örnek, IoT Hub'dan gelen iletileri seyrek denetler (en az 25 dakikada bir). Mqtt
MqttWs
AmqpWs
Geliştirme makinenize gerekli aktarım protokollerini yükleyin.
Örneğin, bu komut protokolü yükler Amqp
:
npm install azure-iot-device-amqp --save
MQTT, AMQP ve HTTPS desteği arasındaki farklar hakkında daha fazla bilgi için bkz . Buluttan cihaza iletişim kılavuzu ve Cihaz iletişim protokolü seçme.
İstemci nesnesi oluşturma
Yüklü paketi kullanarak bir Client
nesne oluşturun.
Örneğin:
const Client = require('azure-iot-device').Client;
Protokol nesnesi oluşturma
Yüklü bir Protocol
aktarım paketi kullanarak bir nesne oluşturun.
Bu örnekte AMQP protokolü atanır:
const Protocol = require('azure-iot-device-amqp').Amqp;
Cihaz bağlantı dizesi ve aktarım protokollerini ekleme
Cihaz bağlantı parametrelerini sağlamak içinConnectionString'den çağrısı yapın:
- connStr - IoT hub kimlik modülü bağlantı dizesi.
- transportCtor - Aktarım protokolü.
Bu örnekte aktarım protokolü kullanılır Amqp
:
const deviceConnectionString = "{IoT hub identity module connection string}"
const Protocol = require('azure-iot-device-mqtt').Amqp;
let client = Client.fromConnectionString(deviceConnectionString, Protocol);
IoT Hub bağlantısını açma
Bir IoT cihazı ile IoT Hub arasında bağlantı açmak için open yöntemini kullanın.
Örneğin:
client.open(function(err) {
if (err) {
console.error('error connecting to hub: ' + err);
process.exit(1);
}
})
X.509 sertifikası kullanarak kimlik doğrulaması
X.509 sertifikası cihazdan IoT Hub'a bağlantı aktarımına eklenir.
X.509 sertifikası kullanarak cihazdan IoT Hub'a bağlantıyı yapılandırmak için:
Cihaz veya kimlik modülünü bağlantı dizesi eklemek ve nesneye aktarım türü eklemek için FromConnectionString'den çağrısı yapın
Client
.x509=true
bir sertifikanın öğesine eklendiğini belirtmek için bağlantı dizesi ekleyinDeviceClientOptions
. Örneğin:Cihaz bağlantı dizesi:
HostName=xxxxx.azure-devices.net;DeviceId=Device-1;SharedAccessKey=xxxxxxxxxxxxx;x509=true
Kimlik modülü bağlantı dizesi:
HostName=xxxxx.azure-devices.net;DeviceId=Device-1;ModuleId=Module-1;SharedAccessKey=xxxxxxxxxxxxx;x509=true
Sertifika ayrıntılarıyla bir JSON değişkeni yapılandırın ve DeviceClientOptions'a geçirin.
İstemci aktarımına bir X.509 sertifikası ve anahtarı (ve isteğe bağlı olarak parola) eklemek için setOptions'ı çağırın.
Cihazdan IoT Hub'a bağlantıyı açmak için open çağrısı yapın.
Bu örnekte, bir JSON değişkeni içindeki sertifika yapılandırma bilgileri gösterilir. Sertifika yapılandırması clientOptions
öğesine setOptions
geçirilir ve bağlantı kullanılarak open
açılır.
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);
Sertifika kimlik doğrulaması hakkında daha fazla bilgi için bkz:
Kod örneği
Cihaz X.509 sertifika kimlik doğrulamasının çalışan bir örneği için bkz . Basit örnek cihaz X.509.
Modül kimlik ikizlerini alma ve bildirilen özellikleri inceleme
Geçerli modül kimlik ikizi bilgilerini bir İkiz nesnesine almak için getTwin çağrısı yapın.
Cihaz kodu daha sonra modül kimlik ikizi özelliklerine erişebilir.
Örneğin:
// Retrieve the current module identity twin
client.getTwin(function(err, twin))
if (err)
console.error('could not get twin');
// Display the current properties
console.log('twin contents:');
console.log(twin.properties);
Modül kimliği ikizi bildirilen özellikleri güncelleştirme
Cihaz tarafından bildirilen özellikleri güncelleştirmek için güncelleştirmeyi kullanın. İlk parametre olarak JSON biçimli bir düzeltme eki ve yöntemin ikinci parametresi olarak işlev yürütme durumu geri çağırma yöntemi ekleyin.
Bu örnekte JSON biçimli modül kimlik ikizi düzeltme eki değişkeninde patch
depolanır. Düzeltme eki, modül kimliği ikizi connectivity
güncelleştirme değerini cellular
içerir. Düzeltme eki ve hata işleyici yöntemine update
geçirilir. Bir hata varsa konsol hata iletisi görüntülenir.
// Create a patch to send to IoT Hub
var patch = {
updateTime: new Date().toString(),
firmwareVersion:'1.2.1',
weather:{
temperature: 72,
humidity: 17
}
};
// Apply the patch
twin.properties.reported.update(patch, function(err)
{
if (err)
{
console.error('could not update twin');
}
else
{
console.log('twin state reported');
process.exit();
}
});
Modül kimliği ikizi istenen özellik değişiklikleri bildirimini alma
Geri çağırma işleyicisi yöntem adını twin.on'a geçirerek istenen özellik değiştirildiğinde yürütülen bir modül kimliği ikizi istenen özellik güncelleştirmesi olay dinleyicisi oluşturun.
İstenen özellik olay dinleyicisi aşağıdaki formları alabilir:
- Tek bir olay işleyicisi ile tüm düzeltme eklerini alma
- Özellikler gruplandırma altında herhangi bir değişiklik olursa olay alma
- Tek bir özellik değişikliği için olay alma
Tek bir olay işleyicisi ile tüm düzeltme eklerini alma
İstediğiniz özellik değişikliğini almak için bir dinleyici oluşturabilirsiniz.
Bu örnek kod, hizmetten alınan tüm özelliklerin çıkışını oluşturur.
twin.on('properties.desired', function (delta) {
console.log('new desired properties received:');
console.log(JSON.stringify(delta));
});
Özellikler gruplandırma altında herhangi bir değişiklik olursa olay alma
Özellik gruplandırma altında herhangi bir değişiklik olursa olay almak için dinleyici oluşturabilirsiniz.
Örneğin:
minTemperature
vemaxTemperature
özellikleri adlıproperties.desired.climate changes
bir özellik gruplandırma altında bulunur.Arka uç hizmet uygulaması bu düzeltme ekini güncelleştirmeye
minTemperature
vemaxTemperature
istenen özelliklere uygular:const twinPatch1 = { properties: { desired: { climate: { minTemperature: 68, maxTemperature: 76, }, }, }, };
Bu kod, özellik gruplandırma içindeki değişiklikleri tetikleyen istenen özellik değişikliği olay dinleyicisini
properties.desired.climate
ayarlar. Bu grupta istenen özellik değişikliği varsa, konsolda en düşük ve en yüksek sıcaklık değişikliği iletileri görüntülenir:twin.on('properties.desired.climate', function (delta) { if (delta.minTemperature || delta.maxTemperature) { console.log('updating desired temp:'); console.log('min temp = ' + twin.properties.desired.climate.minTemperature); console.log('max temp = ' + twin.properties.desired.climate.maxTemperature); } });
Tek bir özellik değişikliği için olay alma
Tek bir özellik değişikliği için dinleyici ayarlayabilirsiniz. Bu örnekte, bu olayın kodu yalnızca boole değeri düzeltme ekinin fanOn
bir parçasıysa yürütülür. Hizmet her güncelleştirdiğinde kod istenen fanOn
yeni durumu döndürür.
Arka uç uygulaması bu istenen özellik düzeltme ekini uygular:
const twinPatch2 = { properties: { desired: { climate: { hvac: { systemControl: { fanOn: true, }, }, }, }, }, };
Dinleyici yalnızca özellik değiştiğinde
fanOn
tetiklenir:twin.on('properties.desired.climate.hvac.systemControl', function (fanOn) { console.log('setting fan state to ' + fanOn); });
Tam örnek
Bu örnek, çok düzeyli geri çağırma işlevi iç içe yerleştirme de dahil olmak üzere bu bölümün ilkelerini kapsüller.
var Client = require('azure-iot-device').Client;
var Protocol = require('azure-iot-device-amqp').Amqp;
// Copy/paste your module connection string here.
var connectionString = 'HostName=xxx.azure-devices.net;DeviceId=myFirstDevice2;ModuleId=myFirstModule2;SharedAccessKey=xxxxxxxxxxxxxxxxxx';
// Create a client using the Amqp protocol.
var client = Client.fromConnectionString(connectionString, Protocol);
client.on('error', function (err) {
console.error(err.message);
});
// connect to the hub
client.open(function(err) {
if (err) {
console.error('error connecting to hub: ' + err);
process.exit(1);
}
console.log('client opened');
// Create device Twin
client.getTwin(function(err, twin) {
if (err) {
console.error('error getting twin: ' + err);
process.exit(1);
}
// Output the current properties
console.log('twin contents:');
console.log(twin.properties);
// Add a handler for desired property changes
twin.on('properties.desired', function(delta) {
console.log('new desired properties received:');
console.log(JSON.stringify(delta));
});
// create a patch to send to the hub
var patch = {
updateTime: new Date().toString(),
firmwareVersion:'1.2.1',
weather:{
temperature: 75,
humidity: 20
}
};
// send the patch
twin.properties.reported.update(patch, function(err) {
if (err) throw err;
console.log('twin state reported');
});
});
});
Cihaz SDK'sı örnekleri
Node.js için Azure IoT SDK'sı, modül kimlik ikizi görevlerini işleyen cihaz uygulamalarının çalışma örneklerini sağlar. Daha fazla bilgi için bkz.
Arka uç uygulaması oluşturma
Bu bölümde, modül kimlik ikizlerini alan ve istenen özellikleri güncelleştiren bir arka uç uygulamasının nasıl oluşturulacağı açıklanır.
Hizmet SDK'sı paketini yükleme
Geliştirme makinenize azure-iothub yüklemek için şu komutu çalıştırın:
npm install azure-iothub --save
Kayıt defteri nesnesi oluşturma
Registry sınıfı, bir arka uç uygulamasından modül kimlik ikizleriyle etkileşime geçmek için gereken tüm yöntemleri kullanıma sunar.
let Registry = require('azure-iothub').Registry;
IoT hub'ına bağlanma
Aşağıdaki yöntemleri kullanarak bir arka uç hizmetini IoT Hub'a bağlayabilirsiniz:
- Paylaşılan erişim ilkesi
- Microsoft Entra
Önemli
Bu makale, paylaşılan erişim imzası kullanarak hizmete bağlanma adımlarını içerir. Bu kimlik doğrulama yöntemi test ve değerlendirme için uygundur, ancak Microsoft Entra ID veya yönetilen kimliklerle bir hizmette kimlik doğrulaması yapmak daha güvenli bir yaklaşımdır. Daha fazla bilgi edinmek için bkz . En iyi güvenlik yöntemleri > Bulut güvenliği.
Paylaşılan erişim ilkesi kullanarak bağlanma
IoT hub'ına bağlanmak için fromConnectionString komutunu kullanın.
update
Bu bölümde kullanılan yöntem, bir modüle istenen özellikleri eklemek için Service Connect paylaşılan erişim ilkesi izni gerektirir. parametresi fromConnectionString
olarak, Service Connect izni içeren bir paylaşılan erişim ilkesi bağlantı dizesi sağlayın. Paylaşılan erişim ilkeleri hakkında daha fazla bilgi için bkz . Paylaşılan erişim imzalarıyla IoT Hub'a erişimi denetleme.
let connectionString = '{IoT hub shared access policy connection string}';
let registry = Registry.fromConnectionString(serviceConnectionString);
Microsoft Entra kullanarak bağlanma
Microsoft Entra kullanan bir arka uç uygulamasının IoT Hub'a bağlanmadan önce başarıyla kimlik doğrulaması yapması ve güvenlik belirteci kimlik bilgilerini alması gerekir. Bu belirteç bir IoT Hub bağlantı yöntemine geçirilir. IoT Hub için Microsoft Entra'yı ayarlama ve kullanma hakkında genel bilgi için bkz . Microsoft Entra Id kullanarak IoT Hub'a erişimi denetleme.
Node.js SDK kimlik doğrulamasına genel bakış için bkz:
- Azure'da kullanıcı kimlik doğrulaması ile çalışmaya başlama
- JavaScript için Azure Identity istemci kitaplığı
Microsoft Entra uygulamasını yapılandırma
Tercih ettiğiniz kimlik doğrulaması kimlik bilgileri için yapılandırılmış bir Microsoft Entra uygulaması ayarlamanız gerekir. Uygulama, arka uç uygulaması tarafından kimlik doğrulaması için kullanılan gizli dizi gibi parametreler içerir. Kullanılabilir uygulama kimlik doğrulaması yapılandırmaları şunlardır:
- İstemci gizli anahtarı
- Sertifika
- Federasyon kimliği kimlik bilgileri
Microsoft Entra uygulamaları, gerçekleştirilen işlemlere bağlı olarak belirli rol izinleri gerektirebilir. Örneğin, IoT Hub cihazına ve modül ikizlerine okuma ve yazma erişimini etkinleştirmek için IoT Hub İkizi Katkıda Bulunanı gereklidir. Daha fazla bilgi için bkz . Azure RBAC rol atamasını kullanarak IoT Hub erişimini yönetme.
Microsoft Entra uygulamasını ayarlama hakkında daha fazla bilgi için bkz. Hızlı Başlangıç: Microsoft kimlik platformu ile uygulama kaydetme.
DefaultAzureCredential kullanarak kimlik doğrulaması
Arka uç uygulamasının kimliğini doğrulamak için Microsoft Entra kullanmanın en kolay yolu DefaultAzureCredential kullanmaktır, ancak üretim ortamında belirli TokenCredential
veya ayrıştırılmış ChainedTokenCredential
bir dahil olmak üzere farklı bir yöntem kullanılması önerilir. Kolaylık olması için, bu bölümde kullanarak DefaultAzureCredential
kimlik doğrulaması ve İstemci gizli dizisi açıklanmaktadır.
kullanmanın DefaultAzureCredential
avantajları ve dezavantajları hakkında daha fazla bilgi için bkz . JavaScript için Azure Identity istemci kitaplığında kimlik bilgileri zincirleri
DefaultAzureCredential farklı kimlik doğrulama mekanizmalarını destekler ve yürütülmekte olduğu ortama göre uygun kimlik bilgisi türünü belirler. Çalışan bir kimlik bilgisi bulana kadar sırayla birden çok kimlik bilgisi türü kullanmayı dener.
Microsoft Entra bu paketi gerektirir:
npm install --save @azure/identity
Bu örnekte, Ortam değişkenlerine Microsoft Entra uygulama kaydı istemci gizli dizisi, istemci kimliği ve kiracı kimliği eklenmiştir. Bu ortam değişkenleri tarafından DefaultAzureCredential
uygulamanın kimliğini doğrulamak için kullanılır. Başarılı bir Microsoft Entra kimlik doğrulamasının sonucu, IoT Hub bağlantı yöntemine geçirilen bir güvenlik belirteci kimlik bilgisidir.
import { DefaultAzureCredential } from "@azure/identity";
// Azure SDK clients accept the credential as a parameter
const credential = new DefaultAzureCredential();
Sonuçta elde edilen kimlik bilgisi belirteci, Microsoft Entra kimlik bilgilerini kabul eden herhangi bir SDK istemcisi için IoT Hub'a bağlanmak üzere fromTokenCredential'a geçirilebilir:
fromTokenCredential
iki parametre gerektirir:
- Azure hizmet URL'si - Azure hizmet URL'si ön ek olmadan
https://
biçiminde{Your Entra domain URL}.azure-devices.net
olmalıdır. Örneğin,MyAzureDomain.azure-devices.net
. - Azure kimlik bilgisi belirteci
Bu örnekte Azure kimlik bilgileri kullanılarak DefaultAzureCredential
elde edilir. Ardından IoT Hub'a bağlantı oluşturmak için Registry.fromTokenCredential
Azure etki alanı URL'si ve kimlik bilgileri sağlanır.
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);
Kod örnekleri
Microsoft Entra hizmeti kimlik doğrulamasının çalışma örnekleri için bkz . Azure kimlik örnekleri.
Modül kimlik ikizlerini alma ve istenen özellikleri güncelleştirme
Modül kimlik ikizinin istenen özellik güncelleştirmelerini içeren bir düzeltme eki oluşturabilirsiniz.
Modül kimlik ikizlerini güncelleştirmek için:
Cihaz İkizi nesnesini almak için getModuleTwin çağrısı yapın.
Modül kimlik ikizi güncelleştirmesini içeren bir düzeltme ekini biçimlendirin. Düzeltme eki, twin sınıfında açıklandığı gibi JSON biçiminde biçimlendirilir. Arka uç hizmet düzeltme eki istenen özellik güncelleştirmelerini içerir. Yama biçimi hakkında daha fazla bilgi için bkz . Etiketler ve özellikler biçimi.
Modül kimlik ikizini düzeltme eki ile güncelleştirmek için güncelleştirmeyi çağırın.
Bu örnekte, ve myModuleId
için myDeviceId
modül kimlik ikizi alınır. Ardından bilgi içeren climate
ikizlere bir yama uygulanır.
// Insert your device ID and moduleId here.
var deviceId = 'myFirstDevice2';
var moduleId = 'myFirstModule2';
// Retrieve the current module identity twin
registry.getModuleTwin(deviceId, moduleId, function (err, twin) {
console.log('getModuleTwin returned ' + (err ? err : 'success'));
if (err) {
console.log(err);
} else {
console.log('success');
console.log('Current twin:' + JSON.stringify(twin))
// Format a desired property patch
const twinPatch1 = {
properties: {
desired: {
climate: { minTemperature: 69, maxTemperature: 77, },
},
},
};
// Send the desired property patch to IoT Hub
twin.update(twinPatch1, function(err) {
if (err) throw err;
console.log('twin state reported');
});
}
});
Hizmet SDK'sı örnekleri
Node.js için Azure IoT SDK'sı, modül kimlik ikizi görevlerini işleyen hizmet uygulamalarının çalışma örneklerini sağlar. Daha fazla bilgi için bkz.