Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini menunjukkan cara untuk:
- Gunakan kemampuan pengunggahan file IoT Hub untuk mengunggah file ke Azure Blob Storage, menggunakan perangkat Azure IoT dan SDK layanan.
- Beri tahu IoT Hub bahwa file berhasil diunggah dan buat layanan backend untuk menerima pemberitahuan pengunggahan file dari IoT Hub, menggunakan SDK layanan Azure IoT.
Dalam beberapa skenario, Anda tidak dapat dengan mudah memetakan data yang dikirim perangkat Anda ke pesan perangkat-ke-cloud yang relatif kecil yang diterima IoT Hub. Kemampuan unggahan file di IoT Hub memungkinkan Anda memindahkan data besar atau kompleks ke cloud. Contohnya:
- Video
- File besar yang berisi gambar
- Data getaran yang diambil sampelnya pada frekuensi tinggi
- Beberapa bentuk data yang diproses sebelumnya
File tersebut biasanya diproses secara batch di cloud menggunakan alat seperti Azure Data Factory atau tumpukan Hadoop. Saat Anda perlu mengunggah file dari perangkat, Anda masih dapat menggunakan keamanan dan keandalan IoT Hub. Artikel ini menunjukkan cara.
Artikel ini dimaksudkan untuk melengkapi sampel SDK yang dapat dijalankan yang dirujuk dari dalam artikel ini.
Untuk informasi selengkapnya, lihat:
Prasyarat
Hub IoT. Beberapa panggilan SDK memerlukan string koneksi utama IoT Hub, jadi catat string koneksi.
Perangkat terdaftar. Beberapa panggilan SDK memerlukan string koneksi utama perangkat, jadi catat string koneksi.
Izin IoT Hub Service Connect - Untuk menerima pesan pemberitahuan unggahan file, layanan backend Anda memerlukan izin Service Connect . Secara default, setiap IoT Hub dibuat dengan kebijakan akses bersama bernama layanan yang memberikan izin ini. Untuk informasi selengkapnya, lihat Menyambungkan ke hub IoT.
Konfigurasikan pengunggahan file di hub IoT Anda dengan menautkan akun Azure Storage dan kontainer Azure Blob Storage. Anda dapat mengonfigurasi ini menggunakan portal Azure, Azure CLI, atau Azure PowerShell.
Gambaran Umum
Panduan ini berisi dua bagian:
- Mengunggah file dari aplikasi perangkat
- Menerima pemberitahuan unggahan file dalam aplikasi backend
Mengunggah file dari aplikasi perangkat
Bagian ini menjelaskan cara mengunggah file dari perangkat ke hub IoT menggunakan kelas DeviceClient di Azure IoT SDK untuk .NET.
Ikuti prosedur ini untuk mengunggah file dari perangkat ke hub IoT:
- Menyambungkan ke hub IoT
- Mendapatkan URI SAS dari hub IoT
- Mengunggah file ke penyimpanan Azure
- Memberi tahu hub IoT tentang status pengunggahan file
Menyambungkan perangkat ke IoT Hub
Aplikasi perangkat dapat mengautentikasi dengan IoT Hub menggunakan metode berikut:
- Sertifikat X.509
- Kunci akses bersama
Mengautentikasi menggunakan sertifikat X.509
Untuk menyambungkan perangkat ke IoT Hub menggunakan sertifikat X.509:
Gunakan DeviceAuthenticationWithX509Certificate untuk membuat objek yang berisi informasi perangkat dan sertifikat.
DeviceAuthenticationWithX509Certificatediteruskan sebagai parameter kedua keDeviceClient.Create(langkah 2).Gunakan DeviceClient.Create untuk menyambungkan perangkat ke IoT Hub menggunakan sertifikat X.509.
Dalam contoh ini, informasi perangkat dan sertifikat diisi dalam objek yang diteruskan authDeviceAuthenticationWithX509Certificate ke DeviceClient.Create.
Contoh ini menunjukkan nilai parameter input sertifikat sebagai variabel lokal untuk kejelasan. Dalam sistem produksi, simpan parameter input sensitif dalam variabel lingkungan atau lokasi penyimpanan lain yang lebih aman. Misalnya, gunakan Environment.GetEnvironmentVariable("HOSTNAME") untuk membaca variabel lingkungan nama host.
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);
Untuk informasi selengkapnya tentang autentikasi sertifikat, lihat:
- Mengautentikasi identitas dengan sertifikat X.509
- Tutorial: Membuat dan mengunggah sertifikat untuk pengujian
Sampel kode
Untuk contoh autentikasi sertifikat X.509 perangkat yang berfungsi, lihat:
- Menyambungkan dengan sertifikat X.509
- DeviceClientX509AuthenticationE2ETests
- Proyek terpandu - Memprovisikan perangkat IoT dengan aman dan dalam skala besar dengan IoT Hub Device Provisioning Service
Mengautentikasi menggunakan kunci akses bersama
Panggil CreateFromConnectionString untuk menyambungkan ke perangkat. Berikan string koneksi utama perangkat.
AMQP adalah protokol transportasi default.
static string connectionString = "{device primary connection string}";
deviceClient = DeviceClient.CreateFromConnectionString(connectionString);
Mendapatkan URI SAS dari hub IoT
Panggil GetFileUploadSasUriAsync untuk mendapatkan detail pengunggahan file. URI SAS digunakan pada langkah berikutnya untuk mengunggah file dari perangkat ke Blob Storage.
const string filePath = "TestPayload.txt";
using var fileStreamSource = new FileStream(filePath, FileMode.Open);
var fileName = Path.GetFileName(fileStreamSource.Name);
var fileUploadSasUriRequest = new FileUploadSasUriRequest
{
BlobName = fileName
};
FileUploadSasUriResponse sasUri = await _deviceClient.GetFileUploadSasUriAsync(fileUploadSasUriRequest, System.Threading.CancellationToken cancellationToken = default);
Uri uploadUri = sasUri.GetBlobUri();
Mengunggah file ke penyimpanan Azure
Untuk mengunggah file ke penyimpanan Azure:
Buat objek blockBlobClient dengan melewatkan URI unggahan file.
Gunakan metode UploadAsync untuk mengunggah file ke Blob Storage, melewati SAS URI. Anda dapat secara opsional menambahkan opsi unggahan Blob dan parameter token pembatalan.
Klien Azure Blob selalu menggunakan HTTPS sebagai protokol untuk mengunggah file ke Azure Storage.
Dalam contoh ini, BlockBlobClient diberikan dengan URI SAS untuk membuat klien Blob blok Azure Storage dan mengunggah file.
var blockBlobClient = new BlockBlobClient(uploadUri);
await blockBlobClient.UploadAsync(fileStreamSource, null, null);
Memberi tahu hub IoT tentang status pengunggahan file
Gunakan CompleteFileUploadAsync untuk memberi tahu hub IoT bahwa klien perangkat menyelesaikan unggahan, meneruskan objek FileUploadCompletionNotification . Bendera IsSuccess menunjukkan apakah unggahan berhasil atau tidak. Setelah diberi tahu, hub IoT akan merilis sumber daya yang terkait dengan unggahan (SAS URI).
Jika pemberitahuan unggahan file diaktifkan, hub IoT mengirimkan pesan pemberitahuan unggahan file ke layanan backend yang dikonfigurasi untuk pemberitahuan unggahan file.
var successfulFileUploadCompletionNotification = new FileUploadCompletionNotification
{
// Mandatory. Must be the same value as the correlation id returned in the sas uri response
CorrelationId = sasUri.CorrelationId,
// Mandatory. Will be present when service client receives this file upload notification
IsSuccess = true,
// Optional, user defined status code. Will be present when service client receives this file upload notification
StatusCode = 200,
// Optional, user-defined status description. Will be present when service client receives this file upload notification
StatusDescription = "Success"
};
await _deviceClient.CompleteFileUploadAsync(successfulFileUploadCompletionNotification);
Sampel unggahan file SDK
SDK menyertakan sampel unggahan file ini.
Menerima pemberitahuan unggahan file di aplikasi backend
Anda dapat membuat layanan backend untuk menerima pesan pemberitahuan unggahan file dari hub IoT.
Kelas ServiceClient berisi metode yang dapat digunakan layanan untuk menerima pemberitahuan unggahan file.
Tambahkan Layanan Paket NuGet
Aplikasi layanan backend memerlukan paket NuGet Microsoft.Azure.Devices .
Menyambungkan ke hub IoT
Anda dapat menyambungkan layanan backend ke IoT Hub menggunakan metode berikut:
- Kebijakan akses bersama
- Microsoft Entra
Penting
Artikel ini menyertakan langkah-langkah untuk menyambungkan ke layanan menggunakan tanda tangan akses bersama. Metode autentikasi ini mudah untuk pengujian dan evaluasi, tetapi mengautentikasi ke layanan dengan ID Microsoft Entra atau identitas terkelola adalah pendekatan yang lebih aman. Untuk mempelajari selengkapnya, lihat Praktik terbaik keamanan untuk solusi IoT dan keamanan cloud>.
Terhubung dengan menggunakan kebijakan akses bersama
Sambungkan aplikasi backend ke perangkat menggunakan CreateFromConnectionString. Aplikasi Anda memerlukan izin koneksi layanan. Sediakan string koneksi kebijakan akses bersama ini sebagai parameter ke fromConnectionString. Untuk informasi selengkapnya tentang kebijakan akses bersama, lihat Mengontrol akses ke IoT Hub dengan tanda tangan akses bersama.
Contohnya:
using Microsoft.Azure.Devices;
static ServiceClient serviceClient;
static string connectionString = "{Shared access policy connection string}";
serviceClient = ServiceClient.CreateFromConnectionString(connectionString);
Menyambungkan menggunakan Microsoft Entra
Aplikasi backend yang menggunakan Microsoft Entra harus berhasil mengautentikasi dan mendapatkan kredensial token keamanan sebelum menyambungkan ke IoT Hub. Token ini diteruskan ke metode koneksi IoT Hub. Untuk informasi umum tentang menyiapkan dan menggunakan Microsoft Entra untuk IoT Hub, lihat Mengontrol akses ke IoT Hub dengan menggunakan ID Microsoft Entra.
Mengonfigurasi aplikasi Microsoft Entra
Anda harus menyiapkan aplikasi Microsoft Entra yang dikonfigurasi untuk kredensial autentikasi pilihan Anda. Aplikasi ini berisi parameter seperti rahasia klien yang digunakan oleh aplikasi backend untuk mengautentikasi. Konfigurasi autentikasi aplikasi yang tersedia adalah:
- Rahasia Klien
- Sertifikat
- Kredensial identitas federasi
Aplikasi Microsoft Entra mungkin memerlukan izin peran tertentu tergantung pada operasi yang dilakukan. Misalnya, Kontributor Kembar IoT Hub diperlukan untuk mengaktifkan akses baca dan tulis ke perangkat dan modul kembar IoT Hub. Untuk informasi selengkapnya, lihat Mengelola akses ke IoT Hub dengan penetapan peran Azure RBAC.
Untuk informasi selengkapnya tentang menyiapkan aplikasi Microsoft Entra, lihat Mulai Cepat: Mendaftarkan aplikasi dengan platform identitas Microsoft.
Mengautentikasi menggunakan DefaultAzureCredential
Cara termudah untuk menggunakan Microsoft Entra untuk mengautentikasi aplikasi backend adalah dengan menggunakan DefaultAzureCredential, tetapi disarankan untuk menggunakan metode yang berbeda di lingkungan produksi termasuk yang spesifik TokenCredential atau yang disederhanakan ChainedTokenCredential. Untuk kesederhanaan, bagian ini menjelaskan autentikasi menggunakan DefaultAzureCredential dan Rahasia klien. Untuk informasi selengkapnya tentang pro dan kontra penggunaan DefaultAzureCredential, lihat Panduan penggunaan untuk DefaultAzureCredential.
DefaultAzureCredential mendukung mekanisme autentikasi yang berbeda dan menentukan jenis kredensial yang sesuai berdasarkan lingkungan tempatnya dijalankan. Ini mencoba menggunakan beberapa jenis kredensial dalam urutan hingga menemukan kredensial yang berfungsi.
Microsoft Entra memerlukan paket NuGet ini dan pernyataan terkait using :
- Azure.Core
- Azure Identitas
using Azure.Core;
using Azure.Identity;
Dalam contoh ini, rahasia klien pendaftaran aplikasi Microsoft Entra, ID klien, dan ID penyewa ditambahkan ke variabel lingkungan. Variabel lingkungan ini digunakan oleh DefaultAzureCredential untuk mengautentikasi aplikasi. Hasil autentikasi Microsoft Entra yang berhasil adalah kredensial token keamanan yang diteruskan ke metode koneksi IoT Hub.
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();
TokenCredential yang dihasilkan kemudian dapat diteruskan ke metode sambungkan ke IoT Hub untuk klien SDK apa pun yang menerima kredensial Microsoft Entra:
Dalam contoh ini, TokenCredential dialihkan ke ServiceClient.Create untuk membuat objek koneksi ServiceClient.
string hostname = "xxxxxxxxxx.azure-devices.net";
using var serviceClient = ServiceClient.Create(hostname, tokenCredential, TransportType.Amqp);
Dalam contoh ini, TokenCredential diteruskan ke RegistryManager.Create untuk membuat objek RegistryManager.
string hostname = "xxxxxxxxxx.azure-devices.net";
registryManager = RegistryManager.Create(hostname, tokenCredential);
Sampel kode
Untuk sampel autentikasi layanan Microsoft Entra yang berfungsi, lihat Sampel autentikasi berbasis peran.
Menerima pemberitahuan unggahan file
Untuk menerima pemberitahuan unggahan file:
- Buat CancellationToken.
- Hubungi GetFileNotificationReceiver untuk membuat penerima pemberitahuan.
- Gunakan perulangan dengan ReceiveAsync untuk menunggu pemberitahuan unggahan file.
Contohnya:
// Define the cancellation token
CancellationTokenSource source = new CancellationTokenSource();
CancellationToken token = source.Token;
// Create a notification receiver
var notificationReceiver = serviceClient.GetFileNotificationReceiver();
Console.WriteLine("\nReceiving file upload notification from service");
// Check for file upload notifications
while (true)
{
var fileUploadNotification = await notificationReceiver.ReceiveAsync(token);
if (fileUploadNotification == null) continue;
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine("Received file upload notification: {0}",
string.Join(", ", fileUploadNotification.BlobName));
Console.ResetColor();
await notificationReceiver.CompleteAsync(fileUploadNotification);
}
Sampel penerima unggahan file SDK
Gambaran Umum
Panduan ini berisi dua bagian:
- Mengunggah file dari aplikasi perangkat
- Menerima pemberitahuan unggahan file dalam aplikasi backend
Mengunggah file dari aplikasi perangkat
Bagian ini menjelaskan cara mengunggah file dari perangkat ke hub IoT menggunakan kelas DeviceClient dari Azure IoT SDK for Java.
Ikuti prosedur ini untuk mengunggah file dari perangkat ke hub IoT:
- Menyambungkan perangkat ke IoT Hub
- Mendapatkan URI SAS dari hub IoT
- Mengunggah file ke Azure Storage
- Mengirim pemberitahuan status unggahan file ke hub IoT
Menyambungkan perangkat ke IoT Hub
Aplikasi perangkat dapat mengautentikasi dengan IoT Hub menggunakan metode berikut:
- Sertifikat X.509
- Kunci akses bersama
Mengautentikasi menggunakan sertifikat X.509
Untuk menyambungkan perangkat ke IoT Hub menggunakan sertifikat X.509:
- Buat objek SSLContext menggunakan buildSSLContext.
- Tambahkan informasi ke
SSLContextobjek ClientOptions . - Panggil DeviceClient menggunakan informasi
ClientOptionsuntuk membuat koneksi perangkat-ke-IoT Hub.
Contoh ini menunjukkan nilai parameter input sertifikat sebagai variabel lokal untuk kejelasan. Dalam sistem produksi, simpan parameter input sensitif dalam variabel lingkungan atau lokasi penyimpanan lain yang lebih aman. Misalnya, gunakan Environment.GetEnvironmentVariable("PUBLICKEY") untuk membaca variabel lingkungan string sertifikat kunci publik.
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);
Untuk informasi selengkapnya tentang autentikasi sertifikat, lihat:
- Mengautentikasi identitas dengan sertifikat X.509
- Tutorial: Membuat dan mengunggah sertifikat untuk pengujian
Sampel kode
Untuk contoh autentikasi sertifikat X.509 perangkat yang berfungsi, lihat:
Mengautentikasi menggunakan kunci akses bersama
Operasi unggahan file selalu menggunakan HTTPS, tetapi DeviceClient dapat menentukan IotHubClientProtocol untuk layanan lain seperti telemetri, metode perangkat, dan kembar perangkat.
IotHubClientProtocol protocol = IotHubClientProtocol.MQTT;
Buat instans DeviceClient untuk menyambungkan ke perangkat menggunakan string koneksi utama perangkat.
String connString = "{IoT hub connection string}";
DeviceClient client = new DeviceClient(connString, protocol);
Mendapatkan URI SAS dari hub IoT
Panggil getFileUploadSasUri untuk mendapatkan objek FileUploadSasUriResponse .
FileUploadSasUriResponse mencakup metode ini dan mengembalikan nilai. Nilai yang dikembalikan dapat diteruskan ke metode unggahan file.
| Metode | Nilai balik |
|---|---|
getCorrelationId() |
Korelasi ID |
getContainerName() |
Nama kontainer |
getBlobName() |
Nama blob |
getBlobUri() |
URI Gumpalan |
Contohnya:
FileUploadSasUriResponse sasUriResponse = client.getFileUploadSasUri(new FileUploadSasUriRequest(file.getName()));
System.out.println("Successfully got SAS URI from IoT hub");
System.out.println("Correlation Id: " + sasUriResponse.getCorrelationId());
System.out.println("Container name: " + sasUriResponse.getContainerName());
System.out.println("Blob name: " + sasUriResponse.getBlobName());
System.out.println("Blob Uri: " + sasUriResponse.getBlobUri());
Mengunggah file ke Azure Storage
Teruskan titik akhir URI blob ke BlobClientBuilder.buildclient untuk membuat objek BlobClient .
BlobClient blobClient =
new BlobClientBuilder()
.endpoint(sasUriResponse.getBlobUri().toString())
.buildClient();
Panggil uploadFromFile untuk mengunggah file ke Blob Storage.
String fullFileName = "Path of the file to upload";
blobClient.uploadFromFile(fullFileName);
Mengirim pemberitahuan status unggahan file ke hub IoT
Kirim pemberitahuan status unggahan ke hub IoT setelah upaya unggahan file.
Buat objek FileUploadCompletionNotification . Sampaikan status keberhasilan unggahan file correlationId dan isSuccess.
isSuccess
true Berikan nilai saat unggahan file berhasil, false jika tidak.
FileUploadCompletionNotification harus dipanggil bahkan ketika pengunggahan file gagal. Hub IoT memiliki jumlah URI SAS tetap yang diizinkan untuk aktif pada waktu tertentu. Setelah selesai dengan pengunggahan file, Anda harus membebaskan URI SAS Anda sehingga URI SAS lainnya dapat dihasilkan. Jika URI SAS tidak dibebaskan melalui API ini, maka akhirnya akan membebaskan dirinya sendiri berdasarkan waktu hidup URI SAS yang telah dikonfigurasi di hub IoT.
Contoh ini mencapai status sukses.
FileUploadCompletionNotification completionNotification = new FileUploadCompletionNotification(sasUriResponse.getCorrelationId(), true);
client.completeFileUpload(completionNotification);
Tutup klien
Bebaskan sumber daya client.
client.closeNow();
Membuat aplikasi backend
Bagian ini menjelaskan cara menerima pemberitahuan unggahan file di aplikasi backend.
Kelas ServiceClient berisi metode yang dapat digunakan layanan untuk menerima pemberitahuan unggahan file.
Menambahkan pernyataan impor
Tambahkan perintah import untuk menggunakan Azure IoT Java SDK dan penangan pengecualian.
import com.microsoft.azure.sdk.iot.service.*;
import java.io.IOException;
import java.net.URISyntaxException;
Menyambungkan ke IoT Hub
Anda dapat menyambungkan layanan backend ke IoT Hub menggunakan metode berikut:
- Kebijakan akses bersama
- Microsoft Entra
Penting
Artikel ini menyertakan langkah-langkah untuk menyambungkan ke layanan menggunakan tanda tangan akses bersama. Metode autentikasi ini mudah untuk pengujian dan evaluasi, tetapi mengautentikasi ke layanan dengan ID Microsoft Entra atau identitas terkelola adalah pendekatan yang lebih aman. Untuk mempelajari selengkapnya, lihat Praktik terbaik keamanan untuk solusi IoT dan keamanan cloud>.
Terhubung dengan menggunakan kebijakan akses bersama
Tentukan protokol koneksi
Gunakan IotHubServiceClientProtocol untuk menentukan protokol lapisan aplikasi yang digunakan oleh klien layanan untuk berkomunikasi dengan IoT Hub.
IotHubServiceClientProtocol hanya menerima AMQPS atau AMQPS_WS enum.
private static final IotHubServiceClientProtocol protocol =
IotHubServiceClientProtocol.AMQPS;
Membuat objek ServiceClient
Buat objek ServiceClient dengan menyediakan string koneksi IoT Hub dan protokol.
Untuk mengunggah file di perangkat ke IoT Hub, layanan Anda memerlukan izin koneksi layanan. Secara default, setiap IoT Hub dibuat dengan kebijakan akses bersama bernama layanan yang memberikan izin ini.
Sebagai parameter untuk konstruktor ServiceClient, berikan kebijakan akses bersama layanan. Untuk informasi selengkapnya tentang kebijakan akses bersama, lihat Mengontrol akses ke IoT Hub dengan tanda tangan akses bersama.
String iotHubConnectionString = "HostName=xxxxx.azure-devices.net;SharedAccessKeyName=service;SharedAccessKey=xxxxxxxxxxxxxxxxxxxxxxxx";
private static final ServiceClient serviceClient (iotHubConnectionString, protocol);
Buka koneksi antara aplikasi dan IoT Hub
Buka koneksi pengirim AMQP. Metode ini membuat koneksi antara aplikasi dan IoT Hub.
serviceClient.open();
Menyambungkan menggunakan Microsoft Entra
Aplikasi backend yang menggunakan Microsoft Entra harus berhasil mengautentikasi dan mendapatkan kredensial token keamanan sebelum menyambungkan ke IoT Hub. Token ini diteruskan ke metode koneksi IoT Hub. Untuk informasi umum tentang menyiapkan dan menggunakan Microsoft Entra untuk IoT Hub, lihat Mengontrol akses ke IoT Hub dengan menggunakan ID Microsoft Entra.
Untuk gambaran umum autentikasi Java SDK, lihat Autentikasi Azure dengan Java dan Azure Identity.
Untuk kesederhanaan, bagian ini berfokus pada menjelaskan autentikasi menggunakan rahasia klien.
Mengonfigurasi aplikasi Microsoft Entra
Anda harus menyiapkan aplikasi Microsoft Entra yang dikonfigurasi untuk kredensial autentikasi pilihan Anda. Aplikasi ini berisi parameter seperti rahasia klien yang digunakan oleh aplikasi backend untuk mengautentikasi. Konfigurasi autentikasi aplikasi yang tersedia adalah:
- Rahasia Klien
- Sertifikat
- Kredensial identitas federasi
Aplikasi Microsoft Entra mungkin memerlukan izin peran tertentu tergantung pada operasi yang dilakukan. Misalnya, Kontributor Kembar IoT Hub diperlukan untuk mengaktifkan akses baca dan tulis ke perangkat dan modul kembar IoT Hub. Untuk informasi selengkapnya, lihat Mengelola akses ke IoT Hub dengan penetapan peran Azure RBAC.
Untuk informasi selengkapnya tentang menyiapkan aplikasi Microsoft Entra, lihat Mulai Cepat: Mendaftarkan aplikasi dengan platform identitas Microsoft.
Mengautentikasi menggunakan DefaultAzureCredential
Cara termudah untuk menggunakan Microsoft Entra untuk mengautentikasi aplikasi backend adalah dengan menggunakan DefaultAzureCredential, tetapi disarankan untuk menggunakan metode yang berbeda di lingkungan produksi termasuk yang spesifik TokenCredential atau yang disederhanakan ChainedTokenCredential.
Untuk informasi selengkapnya tentang pro dan kontra penggunaan DefaultAzureCredential, lihat Rantai kredensial di pustaka klien Azure Identity untuk Java.
DefaultAzureCredential mendukung mekanisme autentikasi yang berbeda dan menentukan jenis kredensial yang sesuai berdasarkan lingkungan tempatnya dijalankan. Ini mencoba menggunakan beberapa jenis kredensial dalam urutan hingga menemukan kredensial yang berfungsi.
Anda dapat mengautentikasi kredensial aplikasi Microsoft Entra menggunakan DefaultAzureCredentialBuilder. Simpan parameter koneksi seperti tenantID rahasia klien, clientID, dan nilai rahasia klien sebagai variabel lingkungan. Setelah TokenCredential dibuat, teruskan ke ServiceClient atau penyusun lain sebagai parameter 'kredensial'.
Dalam contoh ini, DefaultAzureCredentialBuilder berusaha untuk mengautentikasi koneksi dari daftar yang ada di DefaultAzureCredential. Hasil dari autentikasi Microsoft Entra yang berhasil adalah kredensial token keamanan yang diteruskan ke konstruktor seperti ServiceClient.
TokenCredential defaultAzureCredential = new DefaultAzureCredentialBuilder().build();
Mengautentikasi menggunakan ClientSecretCredentialBuilder
Anda dapat menggunakan ClientSecretCredentialBuilder untuk membuat kredensial menggunakan informasi rahasia klien. Jika berhasil, metode ini mengembalikan TokenCredential yang dapat diteruskan ke ServiceClient atau pembangun lain sebagai parameter 'kredensial'.
Dalam contoh ini, rahasia klien pendaftaran aplikasi Microsoft Entra, ID klien, dan nilai ID penyewa telah ditambahkan ke variabel lingkungan. Variabel lingkungan ini digunakan oleh ClientSecretCredentialBuilder untuk membangun kredensial.
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();
Kelas autentikasi lainnya
Java SDK juga menyertakan kelas-kelas ini yang mengautentikasi aplikasi backend dengan Microsoft Entra:
- Kredensial Kode Otorisasi
- AzureCliCredential
- AzureDeveloperCliCredential
- AzurePipelinesCredential
- Kredensial Token Berantai
- ClientAssertionCredential
- ClientCertificateCredential
- Kredensial Kode Perangkat
- EnvironmentCredential
- InteractiveBrowserCredential
- Identitas TerkelolaKredensial
- Atas NamaKredensial
Sampel kode
Untuk sampel kerja autentikasi layanan Microsoft Entra, lihat Sampel autentikasi berbasis peran.
Periksa status unggahan file
Untuk memeriksa status unggahan file:
- Buat objek getFileUploadNotificationReceiver .
- Gunakan buka untuk menyambungkan ke hub IoT.
- Panggil receive untuk memeriksa status unggahan file. Metode ini mengembalikan objek fileUploadNotification . Jika pemberitahuan unggahan diterima, Anda dapat melihat bidang status unggahan menggunakan metode fileUploadNotification .
Contohnya:
FileUploadNotificationReceiver receiver = serviceClient.getFileUploadNotificationReceiver();
receiver.open();
FileUploadNotification fileUploadNotification = receiver.receive(2000);
if (fileUploadNotification != null)
{
System.out.println("File Upload notification received");
System.out.println("Device Id : " + fileUploadNotification.getDeviceId());
System.out.println("Blob Uri: " + fileUploadNotification.getBlobUri());
System.out.println("Blob Name: " + fileUploadNotification.getBlobName());
System.out.println("Last Updated : " + fileUploadNotification.getLastUpdatedTimeDate());
System.out.println("Blob Size (Bytes): " + fileUploadNotification.getBlobSizeInBytes());
System.out.println("Enqueued Time: " + fileUploadNotification.getEnqueuedTimeUtcDate());
}
else
{
System.out.println("No file upload notification");
}
// Close the receiver object
receiver.close();
Sampel unggahan file SDK
Ada dua sampel unggahan file Java.
Memasang paket
Pustaka azure-iot-device harus diinstal sebelum memanggil kode terkait.
pip install azure-iot-device
Paket azure.storage.blob digunakan untuk melakukan unggahan file.
pip install azure.storage.blob
Mengunggah file dari aplikasi perangkat
Bagian ini menjelaskan cara mengunggah file dari perangkat ke hub IoT menggunakan kelas IoTHubDeviceClient dari Azure IoT SDK untuk Python.
Mengimpor pustaka
import os
from azure.iot.device import IoTHubDeviceClient
from azure.core.exceptions import AzureError
from azure.storage.blob import BlobClient
Menyambungkan perangkat ke IoT Hub
Aplikasi perangkat dapat mengautentikasi dengan IoT Hub menggunakan metode berikut:
- Sertifikat X.509
- Kunci akses bersama
Mengautentikasi menggunakan sertifikat X.509
Untuk menyambungkan perangkat ke IoT Hub menggunakan sertifikat X.509:
- Gunakan create_from_x509_certificate untuk menambahkan parameter sertifikat X.509
- Panggil sambungkan untuk menyambungkan klien perangkat
Contoh ini menunjukkan nilai parameter input sertifikat sebagai variabel lokal untuk kejelasan. Dalam sistem produksi, simpan parameter input sensitif dalam variabel lingkungan atau lokasi penyimpanan lain yang lebih aman. Misalnya, gunakan os.getenv("HOSTNAME") untuk membaca variabel lingkungan nama host.
# 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()
Untuk informasi selengkapnya tentang autentikasi sertifikat, lihat:
- Mengautentikasi identitas dengan sertifikat X.509
- Tutorial: Membuat dan mengunggah sertifikat untuk pengujian
Sampel kode
Untuk contoh pengoperasian autentikasi sertifikat perangkat X.509, lihat contoh yang nama berkasnya berakhiran x509 pada Skenario Hub Asinkron.
Mengautentikasi menggunakan kunci akses bersama
Untuk menyambungkan perangkat ke IoT Hub:
- Panggil create_from_connection_string untuk menambahkan string koneksi utama perangkat.
- Panggil sambungkan untuk menyambungkan klien perangkat.
Contohnya:
# Add your IoT hub primary connection string
CONNECTION_STRING = "{Device primary connection string}"
device_client = IoTHubDeviceClient.create_from_connection_string(CONNECTION_STRING)
# Connect the client
device_client.connect()
Ambil informasi Blob Storage
Panggil get_storage_info_for_blob untuk mendapatkan informasi dari hub IoT tentang akun Azure Storage yang ditautkan. Informasi ini mencakup nama host, nama kontainer, nama blob, dan token SAS. Metode get_storage_info_for_blob juga mengembalikan correlation_id, yang digunakan dalam metode notify_blob_upload_status.
correlation_id adalah cara IoT Hub untuk menandai Blob mana yang sedang Anda kerjakan.
# Get the storage info for the blob
PATH_TO_FILE = "{Full path to local file}"
blob_name = os.path.basename(PATH_TO_FILE)
blob_info = device_client.get_storage_info_for_blob(blob_name)
Mengunggah file ke Blob Storage
Untuk mengunggah file ke Blob Storage:
- Gunakan from_blob_url untuk membuat objek BlobClient dari URL blob.
- Panggil upload_blob untuk mengunggah file ke Blob Storage.
Contoh ini menguraikan struktur blob_info untuk membuat URL yang digunakan untuk menginisialisasi BlobClient. Kemudian, ia memanggil upload_blob untuk mengunggah file ke Blob Storage.
try:
sas_url = "https://{}/{}/{}{}".format(
blob_info["hostName"],
blob_info["containerName"],
blob_info["blobName"],
blob_info["sasToken"]
)
print("\nUploading file: {} to Azure Storage as blob: {} in container {}\n".format(file_name, blob_info["blobName"], blob_info["containerName"]))
# Upload the specified file
with BlobClient.from_blob_url(sas_url) as blob_client:
with open(file_name, "rb") as f:
result = blob_client.upload_blob(f, overwrite=True)
return (True, result)
except FileNotFoundError as ex:
# catch file not found and add an HTTP status code to return in notification to IoT hub
ex.status_code = 404
return (False, ex)
except AzureError as ex:
# catch Azure errors that might result from the upload operation
return (False, ex)
Memberi tahu hub IoT tentang status unggahan
Gunakan notify_blob_upload_status untuk memberi tahu hub IoT tentang status operasi Blob Storage. Berikan correlation_id yang diperoleh dengan metode get_storage_info_for_blob.
correlation_id digunakan oleh hub IoT untuk memberi tahu layanan apa pun yang mungkin mendengarkan pemberitahuan mengenai status tugas pengunggahan file.
Contoh ini memberi tahu hub IoT tentang pengunggahan file yang berhasil:
device_client.notify_blob_upload_status(storage_info["correlationId"], True, 200, "OK: {}".format(PATH_TO_FILE)
Mematikan klien perangkat
Matikan aplikasi klien. Setelah metode ini dipanggil, setiap upaya lebih lanjut untuk memanggil klien akan mengakibatkan ClientError terjadi.
device_client.shutdown()
Sampel unggahan file SDK
SDK menyertakan dua sampel unggahan file:
Gambaran Umum
Artikel ini menjelaskan cara menggunakan Azure IoT SDK untuk Node.js membuat aplikasi perangkat guna mengunggah file dan aplikasi layanan backend menerima pemberitahuan pengunggahan file.
Membuat aplikasi perangkat
Bagian ini menjelaskan cara mengunggah file dari perangkat ke hub IoT menggunakan paket azure-iot-device di Azure IoT SDK untuk Node.js.
Menginstal paket SDK
Jalankan perintah ini untuk menginstal SDK perangkat azure-iot-device , azure-iot-device-mqtt, dan paket @azure/storage-blob pada komputer pengembangan Anda:
npm install azure-iot-device azure-iot-device-mqtt @azure/storage-blob --save
Paket azure-iot-device berisi objek yang berinteraksi dengan perangkat IoT.
Ikuti prosedur ini untuk mengunggah file dari perangkat ke hub IoT:
- Menyambungkan perangkat ke IoT Hub
- Mendapatkan token SAS (tanda tangan akses bersama) untuk Blob dari IoT Hub
- Mengunggah file ke Azure Storage
- Mengirim pemberitahuan status unggahan file ke hub IoT
Membuat modul
Buat modul Klien, Protokol, kesalahan, dan jalur menggunakan paket yang diinstal.
const Protocol = require('azure-iot-device-mqtt').Mqtt;
const errors = require('azure-iot-common').errors;
const path = require('path');
Menyambungkan perangkat ke IoT Hub
Aplikasi perangkat dapat mengautentikasi dengan IoT Hub menggunakan metode berikut:
- Sertifikat X.509
- Kunci akses bersama
Mengautentikasi menggunakan sertifikat X.509
Sertifikat X.509 dilampirkan ke transportasi koneksi device-to-IoT Hub.
Untuk mengonfigurasi koneksi device-to-IoT Hub menggunakan sertifikat X.509:
Panggil dariConnectionString untuk menambahkan perangkat atau modul identitas string koneksi, dan jenis transportasi ke
Clientobjek. Tambahkanx509=trueke string koneksi untuk menunjukkan bahwa sertifikat ditambahkan keDeviceClientOptions. Contohnya:String koneksi perangkat:
HostName=xxxxx.azure-devices.net;DeviceId=Device-1;SharedAccessKey=xxxxxxxxxxxxx;x509=trueString sambungan modul identitas:
HostName=xxxxx.azure-devices.net;DeviceId=Device-1;ModuleId=Module-1;SharedAccessKey=xxxxxxxxxxxxx;x509=true
Konfigurasikan variabel JSON dengan detail sertifikat dan teruskan ke DeviceClientOptions.
Panggil setOptions untuk menambahkan sertifikat dan kunci X.509 (dan secara opsional, kata sandi) ke transport klien.
Panggil buka untuk membuka koneksi dari perangkat ke IoT Hub.
Contoh ini menunjukkan informasi konfigurasi sertifikat dalam variabel JSON. Konfigurasi clientOptions sertifikasi diteruskan ke setOptions, dan koneksi dibuka menggunakan 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);
Untuk informasi selengkapnya tentang autentikasi sertifikat, lihat:
Sampel kode
Untuk sampel autentikasi sertifikat X.509 perangkat yang berfungsi, lihat Perangkat sampel sederhana X.509.
Mengautentikasi menggunakan kunci akses bersama
Pilih protokol transportasi
Objek Client mendukung protokol ini:
Amqp-
Http- Saat menggunakanHttp,Clientinstans memeriksa pesan dari IoT Hub dengan jarang, setidaknya setiap 25 menit. MqttMqttWsAmqpWs
Instal protokol transportasi yang diperlukan pada komputer pengembangan Anda.
Misalnya, perintah ini menginstal Amqp protokol:
npm install azure-iot-device-amqp --save
Untuk informasi selengkapnya tentang perbedaan antara dukungan MQTT, AMQP, dan HTTPS, lihat Panduan komunikasi cloud-to-device dan Pilih protokol komunikasi.
Membuat objek klien
Buat Client objek menggunakan paket yang diinstal.
Contohnya:
const Client = require('azure-iot-device').Client;
Membuat objek protokol
Buat objek Protocol menggunakan paket transportasi yang terinstal.
Contoh ini menetapkan protokol AMQP:
const Protocol = require('azure-iot-device-amqp').Amqp;
Menambahkan string koneksi perangkat dan protokol transportasi
Panggil dariConnectionString untuk menyediakan parameter koneksi perangkat:
- connStr - String koneksi perangkat.
- transportCtor - Protokol transportasi.
Contoh ini menggunakan Amqp protokol transportasi:
const deviceConnectionString = "{IoT hub device connection string}"
const Protocol = require('azure-iot-device-mqtt').Amqp;
let client = Client.fromConnectionString(deviceConnectionString, Protocol);
Buka koneksi ke IoT Hub
Gunakan metode terbuka untuk membuka koneksi antara perangkat IoT dan IoT Hub.
Contohnya:
client.open(function(err) {
if (err) {
console.error('error connecting to hub: ' + err);
process.exit(1);
}
})
Mendapatkan token SAS dari hub IoT
Gunakan getBlobSharedAccessSignature untuk mendapatkan token SAS akun penyimpanan tertaut dari hub IoT.
Contohnya:
// make sure you set these environment variables prior to running the sample.
const localFilePath = process.env.PATH_TO_FILE;
const storageBlobName = path.basename(localFilePath);
const blobInfo = await client.getBlobSharedAccessSignature(storageBlobName);
if (!blobInfo) {
throw new errors.ArgumentError('Invalid upload parameters');
}
Mengunggah file ke hub IoT
Untuk mengunggah file dari perangkat ke hub IoT:
- Membuat alur aliran
- Membuat URL blob
- Membuat BlockBlobClient untuk unggahan file ke Blob Storage
- Panggil uploadFile untuk mengunggah file ke Blob Storage
- Hubungi notifyBlobUploadStatus untuk memberi tahu hub IoT bahwa unggahan berhasil atau gagal
Contohnya:
// Open the pipeline
const pipeline = newPipeline(new AnonymousCredential(), {
retryOptions: { maxTries: 4 },
telemetry: { value: 'HighLevelSample V1.0.0' }, // Customized telemetry string
keepAliveOptions: { enable: false }
});
// Construct the blob URL
const { hostName, containerName, blobName, sasToken } = blobInfo;
const blobUrl = `https://${hostName}/${containerName}/${blobName}${sasToken}`;
// Create the BlockBlobClient for file upload to Blob Storage
const blobClient = new BlockBlobClient(blobUrl, pipeline);
// Setup blank status notification arguments to be filled in on success/failure
let isSuccess;
let statusCode;
let statusDescription;
const uploadStatus = await blobClient.uploadFile(localFilePath);
console.log('uploadStreamToBlockBlob success');
try {
const uploadStatus = await blobClient.uploadFile(localFilePath);
console.log('uploadStreamToBlockBlob success');
// Save successful status notification arguments
isSuccess = true;
statusCode = uploadStatus._response.status;
statusDescription = uploadStatus._response.bodyAsText;
// Notify IoT hub of upload to blob status (success)
console.log('notifyBlobUploadStatus success');
}
catch (err) {
isSuccess = false;
statusCode = err.code;
statusDescription = err.message;
console.log('notifyBlobUploadStatus failed');
console.log(err);
}
// Send file upload status notification to IoT hub
await client.notifyBlobUploadStatus(blobInfo.correlationId, isSuccess, statusCode, statusDescription);
Mengunggah file lokal ke penyimpanan blob
Anda dapat mengunggah file lokal ke penyimpanan blob dari komputer
const deviceClient = Client.fromConnectionString(deviceConnectionString, Protocol);
uploadToBlob(localFilePath, deviceClient)
.catch((err) => {
console.log(err);
})
.finally(() => {
process.exit();
});
Sampel unggahan file SDK
SDK menyertakan sampel unggahan ke blob tingkat lanjut.
Membuat aplikasi backend
Bagian ini menjelaskan cara menerima pemberitahuan unggahan file di aplikasi backend.
Kelas ServiceClient berisi metode yang dapat digunakan layanan untuk menerima pemberitahuan unggahan file.
Menginstal paket SDK layanan
Jalankan perintah ini untuk menginstal azure-iothub di komputer pengembangan Anda:
npm install azure-iothub --save
Menyambungkan ke hub IoT
Anda dapat menyambungkan layanan backend ke IoT Hub menggunakan metode berikut:
- Kebijakan akses bersama
- Microsoft Entra
Penting
Artikel ini menyertakan langkah-langkah untuk menyambungkan ke layanan menggunakan tanda tangan akses bersama. Metode autentikasi ini mudah untuk pengujian dan evaluasi, tetapi mengautentikasi ke layanan dengan ID Microsoft Entra atau identitas terkelola adalah pendekatan yang lebih aman. Untuk mempelajari selengkapnya, lihat Praktik terbaik keamanan untuk solusi IoT dan keamanan cloud>.
Terhubung dengan menggunakan kebijakan akses bersama
Gunakan fromConnectionString untuk menyambungkan ke hub IoT.
Untuk mengunggah file dari perangkat, layanan Anda memerlukan izin koneksi layanan. Secara default, setiap IoT Hub dibuat dengan kebijakan akses bersama bernama layanan yang memberikan izin ini.
Sebagai parameter untuk CreateFromConnectionString, berikan string koneksi kebijakan akses bersama untuk layanan. Untuk informasi selengkapnya tentang kebijakan akses bersama, lihat Mengontrol akses ke IoT Hub dengan tanda tangan akses bersama.
var Client = require('azure-iothub').Client;
var connectionString = '{IoT hub shared access policy connection string}';
var client = Client.fromConnectionString(connectionString);
Menyambungkan menggunakan Microsoft Entra
Aplikasi backend yang menggunakan Microsoft Entra harus berhasil mengautentikasi dan mendapatkan kredensial token keamanan sebelum menyambungkan ke IoT Hub. Token ini diteruskan ke metode koneksi IoT Hub. Untuk informasi umum tentang menyiapkan dan menggunakan Microsoft Entra untuk IoT Hub, lihat Mengontrol akses ke IoT Hub dengan menggunakan ID Microsoft Entra.
Untuk gambaran umum autentikasi SDK Node.js, lihat:
Mengonfigurasi aplikasi Microsoft Entra
Anda harus menyiapkan aplikasi Microsoft Entra yang dikonfigurasi untuk kredensial autentikasi pilihan Anda. Aplikasi ini berisi parameter seperti rahasia klien yang digunakan oleh aplikasi backend untuk mengautentikasi. Konfigurasi autentikasi aplikasi yang tersedia adalah:
- Rahasia Klien
- Sertifikat
- Kredensial identitas federasi
Aplikasi Microsoft Entra mungkin memerlukan izin peran tertentu tergantung pada operasi yang dilakukan. Misalnya, Kontributor Kembar IoT Hub diperlukan untuk mengaktifkan akses baca dan tulis ke perangkat dan modul kembar IoT Hub. Untuk informasi selengkapnya, lihat Mengelola akses ke IoT Hub dengan penetapan peran Azure RBAC.
Untuk informasi selengkapnya tentang menyiapkan aplikasi Microsoft Entra, lihat Mulai Cepat: Mendaftarkan aplikasi dengan platform identitas Microsoft.
Mengautentikasi menggunakan DefaultAzureCredential
Cara termudah untuk menggunakan Microsoft Entra untuk mengautentikasi aplikasi backend adalah dengan menggunakan DefaultAzureCredential, tetapi disarankan untuk menggunakan metode yang berbeda di lingkungan produksi termasuk yang spesifik TokenCredential atau yang disederhanakan ChainedTokenCredential. Untuk kesederhanaan, bagian ini menjelaskan autentikasi menggunakan DefaultAzureCredential dan Rahasia klien.
Untuk informasi selengkapnya tentang pro dan kontra penggunaan DefaultAzureCredential, lihat Rantai kredensial di pustaka klien Azure Identity untuk JavaScript
DefaultAzureCredential mendukung mekanisme autentikasi yang berbeda dan menentukan jenis kredensial yang sesuai berdasarkan lingkungan tempatnya dijalankan. Ini mencoba menggunakan beberapa jenis kredensial dalam urutan hingga menemukan kredensial yang berfungsi.
Microsoft Entra memerlukan paket ini:
npm install --save @azure/identity
Dalam contoh ini, rahasia klien pendaftaran aplikasi Microsoft Entra, ID klien, dan ID penyewa telah ditambahkan ke variabel lingkungan. Variabel lingkungan ini digunakan oleh DefaultAzureCredential untuk mengautentikasi aplikasi. Hasil autentikasi Microsoft Entra yang berhasil adalah kredensial token keamanan yang diteruskan ke metode koneksi IoT Hub.
import { DefaultAzureCredential } from "@azure/identity";
// Azure SDK clients accept the credential as a parameter
const credential = new DefaultAzureCredential();
Token kredensial yang dihasilkan kemudian dapat diteruskan ke dariTokenCredential untuk terhubung ke IoT Hub untuk klien SDK apa pun yang menerima kredensial Microsoft Entra:
fromTokenCredential memerlukan dua parameter:
- URL layanan Azure - URL layanan Azure harus dalam format
{Your Entra domain URL}.azure-devices.nettanpahttps://awalan. Contohnya,MyAzureDomain.azure-devices.net. - Token kredensial Azure
Dalam contoh ini, kredensial Azure diperoleh menggunakan DefaultAzureCredential. URL domain Azure dan kredensial diberikan ke Registry.fromTokenCredential untuk membuat koneksi ke 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);
Sampel kode
Untuk sampel autentikasi layanan Microsoft Entra yang berfungsi, lihat Contoh identitas Azure.
Membuat penerima panggilan balik pemberitahuan unggahan file
Untuk membuat penerima panggilan balik pemberitahuan unggahan file:
- Panggil getFileNotificationReceiver. Berikan nama metode panggilan balik pengunggahan file yang dipanggil saat pesan pemberitahuan diterima.
- Memproses notifikasi pengunggahan file pada metode callback.
Contoh ini menyiapkan receiveFileUploadNotification penerima panggilan balik pemberitahuan. Penerima menginterpretasikan informasi status unggahan file dan mencetak pesan status ke konsol.
//Set up the receiveFileUploadNotification notification message callback receiver
serviceClient.getFileNotificationReceiver(function receiveFileUploadNotification(err, receiver){
if (err) {
console.error('error getting the file notification receiver: ' + err.toString());
} else {
receiver.on('message', function (msg) {
console.log('File upload from device:')
console.log(msg.getData().toString('utf-8'));
receiver.complete(msg, function (err) {
if (err) {
console.error('Could not finish the upload: ' + err.message);
} else {
console.log('Upload complete');
}
});
});
}
Sampel pemberitahuan unggahan file SDK
SDK menyertakan sampel unggahan file.