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 memperlihatkan kepada Anda cara mengautentikasi dengan namespace Azure Event Grid dengan menggunakan webhook atau fungsi Azure.
Autentikasi webhook memungkinkan titik akhir HTTP eksternal (webhook atau fungsi) untuk mengautentikasi koneksi Message Queuing Telemetry Transport (MQTT) secara dinamis. Metode ini menggunakan validasi Microsoft Entra ID JSON Web Token untuk memastikan akses yang aman.
Ketika klien mencoba untuk terhubung, broker memanggil titik akhir HTTP yang ditentukan pengguna yang memvalidasi kredensial, seperti token Tanda Tangan Akses Bersama, nama pengguna, dan kata sandi, atau bahkan melakukan pemeriksaan Daftar Pencabutan Sertifikat. Webhook mengevaluasi permintaan dan mengembalikan keputusan untuk mengizinkan atau menolak koneksi, bersama dengan metadata opsional untuk otorisasi halus. Pendekatan ini mendukung kebijakan autentikasi yang fleksibel dan terpusat di berbagai armada perangkat dan kasus penggunaan.
Prasyarat
- Namespace Layanan Event Grid dengan identitas terkelola yang ditetapkan sistem atau ditetapkan pengguna.
- Webhook eksternal atau fungsi Azure.
- Akses yang diberikan ke identitas terkelola namespace Event Grid ke fungsi Azure atau webhook.
Langkah-langkah tingkat tinggi
Untuk menggunakan autentikasi webhook kustom untuk namespace, ikuti langkah-langkah berikut:
- Buat namespace dan konfigurasikan subresourcenya.
- Aktifkan identitas terkelola di namespace Layanan Event Grid Anda.
- Berikan akses identitas terkelola ke fungsi atau webhook Azure Anda.
- Konfigurasikan pengaturan webhook kustom di namespace Layanan Event Grid Anda.
- Sambungkan klien Anda ke namespace Layanan Event Grid dan dapatkan autentikasi melalui webhook atau fungsi.
Membuat namespace dan mengonfigurasi subsumber dayanya
Untuk membuat namespace layanan dan mengonfigurasi sub-sumber dayanya, ikuti instruksi di Mulai Cepat: Menerbitkan dan berlangganan pesan MQTT pada namespace Layanan Event Grid dengan portal Microsoft Azure. Lewati langkah-langkah untuk membuat sertifikat dan klien karena identitas klien berasal dari token yang disediakan. Atribut klien didasarkan pada klaim kustom dalam token klien. Atribut klien digunakan dalam kueri grup klien, variabel templat topik, dan konfigurasi pengayaan perutean.
Mengaktifkan identitas terkelola di namespace Layanan Event Grid Anda
Untuk mengaktifkan identitas terkelola yang ditetapkan sistem di namespace Layanan Event Grid Anda, gunakan perintah berikut:
az eventgrid namespace update --resource-group <resource group name> --name <namespace name> --identity "{type:systemassigned}"
Untuk informasi tentang cara mengonfigurasi identitas yang ditetapkan sistem dan pengguna dengan menggunakan portal Microsoft Azure, lihat Mengaktifkan identitas terkelola untuk namespace Layanan Event Grid.
Memberikan identitas terkelola akses yang sesuai ke fungsi atau webhook
Berikan akses yang tepat kepada identitas terkelola dari namespace Event Grid Anda ke fungsi atau webhook Azure yang dituju.
Untuk menyiapkan autentikasi kustom untuk fungsi Azure, ikuti langkah-langkah berikutnya.
Membuat aplikasi Microsoft Entra
Pada halaman Gambaran Umum aplikasi, catat nilai ID Aplikasi (klien).
Di menu sebelah kiri, pilih Ekspos API. Di samping URI ID Aplikasi, pilih Tambahkan.
Catat nilai URI ID Aplikasi pada panel Edit URI ID aplikasi , lalu pilih Simpan.
Menyiapkan autentikasi untuk fungsi Azure
Jika Anda memiliki fungsi Azure dasar yang dibuat dari portal Microsoft Azure, siapkan autentikasi dan validasi token ID Microsoft Entra yang dibuat dengan menggunakan identitas terkelola.
Buka aplikasi Azure Functions Anda.
Di menu sebelah kiri, pilih Autentikasi, lalu pilih Tambahkan IdP.
Pada halaman Tambahkan IdP , untuk Penyedia Identitas, pilih Microsoft dari daftar dropdown.
Di bagian Pendaftaran aplikasi , tentukan nilai untuk properti berikut:
Untuk Audiens token yang diizinkan, tambahkan nilai URI ID Aplikasi dari aplikasi Microsoft Entra yang Anda catat sebelumnya.
Di bagian Pemeriksaan tambahan , untuk pengembangan aplikasi Klien, pilih Izinkan permintaan dari aplikasi klien tertentu.
Pada panel Aplikasi klien yang diizinkan , masukkan ID klien identitas terkelola yang ditetapkan sistem yang digunakan untuk menghasilkan token. Anda dapat menemukan ID ini di aplikasi perusahaan sumber daya ID Microsoft Entra.
Pilih pengaturan lain berdasarkan persyaratan spesifik Anda, lalu pilih Tambahkan.
Sekarang, buat dan gunakan token ID Microsoft Entra.
- Hasilkan token ID Microsoft Entra dengan menggunakan identitas terkelola dengan URI ID aplikasi sebagai sumber daya.
- Gunakan token ini untuk memanggil fungsi Azure dengan menyertakannya di header permintaan.
Mengonfigurasi pengaturan autentikasi webhook kustom di namespace Layanan Event Grid Anda
Konfigurasikan pengaturan autentikasi webhook kustom di namespace Layanan Event Grid Anda dengan menggunakan portal Microsoft Azure dan Azure CLI. Anda membuat namespace terlebih dahulu lalu memperbaruinya.
Menggunakan portal Azure
Buka namespace Layanan Event Grid Anda di portal Microsoft Azure.
Pada halaman Namespace Event Grid, pilih Konfigurasi di menu sebelah kiri.
Di bagian Autentikasi Webhook Kustom , tentukan nilai untuk properti berikut ini:
- Jenis identitas terkelola: Pilih Pengguna yang ditetapkan.
- URL Webhook: Masukkan nilai titik akhir URL tempat layanan Event Grid mengirim permintaan webhook yang diautentikasi dengan menggunakan identitas terkelola yang ditentukan.
- URI audiens token: Masukkan nilai ID aplikasi Microsoft Entra atau URI untuk mendapatkan token akses yang akan disertakan sebagai token pembawa dalam permintaan pengiriman.
- ID penyewa ID Microsoft Entra: Masukkan nilai ID penyewa Microsoft Entra yang digunakan untuk memperoleh token pembawa untuk pengiriman webhook yang diautentikasi.
Pilih Terapkan.
Gunakan Azure CLI
Untuk memperbarui namespace Anda dengan konfigurasi autentikasi webhook kustom, gunakan perintah berikut:
az eventgrid namespace update \
--resource-group <resource-group-name> \
--name <namespace-name> \
--api-version 2025-04-01-preview \
--identity-type UserAssigned \
--identity-user-assigned-identities "/subscriptions/XXXXXXXXXXX/resourcegroups/XXXXXXXXXXX/providers/Microsoft.ManagedIdentity/userAssignedIdentities/XXXXXXXXXXX={}" \
--set properties.isZoneRedundant=true \
properties.topicSpacesConfiguration.state=Enabled \
properties.topicSpacesConfiguration.clientAuthentication.webHookAuthentication.identity.type=UserAssigned \
properties.topicSpacesConfiguration.clientAuthentication.webHookAuthentication.identity.userAssignedIdentity="/subscriptions/XXXXXXXXXXX/resourcegroups/XXXXXXXXXXX/providers/Microsoft.ManagedIdentity/userAssignedIdentities/XXXXXXXXXXX" \
properties.topicSpacesConfiguration.clientAuthentication.webHookAuthentication.endpointUrl="https://XXXXXXXXXXX" \
properties.topicSpacesConfiguration.clientAuthentication.webHookAuthentication.azureActiveDirectoryApplicationIdOrUri="api://XXXXXXXXXXX/.default" \
properties.topicSpacesConfiguration.clientAuthentication.webHookAuthentication.azureActiveDirectoryTenantId="XXXXXXXXXXX"
Ganti <NAMESPACE_NAME> dan <RESOURCE_GROUP_NAME> dengan nilai aktual Anda. Isi tempat penampung di langganan, grup sumber daya, identitas, ID aplikasi, URL, dan ID penyewa. Untuk meningkatkan performa dan keandalan autentikasi berbasis webhook untuk broker Event Grid MQTT, kami sangat menyarankan Agar Anda mengaktifkan dukungan HTTP/2 untuk titik akhir webhook Anda.
Detail-detail Webhook API
Tajuk permintaan
Otorisasi: Token pembawa
Token adalah token Microsoft Entra untuk identitas terkelola yang dikonfigurasi untuk memanggil webhook.
Permintaan muatan
{
"clientId": "<string>",
"userName": "<string>",
"password": "<base64 encoded bytes>",
"authenticationMethod": "<string>",
"authenticationData": "<base64 encoded bytes>",
"clientCertificate": "<certificate in PEM format>",
"clientCertificateChain": "<certificates from chain in PEM format>"
}
Deskripsi kolom payload
| Bidang | Diperlukan/Opsional | Deskripsi |
|---|---|---|
clientId |
Diperlukan | ID klien dari paket MQTT CONNECT. |
userName |
Fakultatif | Nama pengguna dari paket MQTT CONNECT. |
password |
Fakultatif | Kata sandi dari paket MQTT CONNECT dalam pengodean Base64. |
authenticationMethod |
Fakultatif | Metode autentikasi dari paket MQTT CONNECT (hanya MQTT5). |
authenticationData |
Fakultatif | Data autentikasi dari paket MQTT CONNECT dalam pengodean Base64 (hanya MQTT5). |
clientCertificate |
Fakultatif | Sertifikat klien dalam format PEM. |
clientCertificateChain |
Fakultatif | Sertifikat lain yang disediakan oleh klien yang diperlukan untuk membangun rantai dari sertifikat klien ke sertifikat Otoritas Sertifikat. |
userProperties |
Fakultatif | Properti pengguna dari paket CONNECT (hanya MQTT5). |
Isi Muatan Respons
Respons berhasil
HTTP/1.1 200 OK
Content-Type: application/json
{
"decision": "allow",
"clientAuthenticationName": "<string>",
"attributes": {
"attr": "<int/string/array_of_strings>",
...
},
"expiration": "<unix time format>"
}
Respons ditolak
HTTP/1.1 400 Bad Request
Content-Type: application/json
{
"decision": "deny",
"errorReason": "<string>"
}
Deskripsi bidang respons
| Bidang | Deskripsi |
|---|---|
decision (diperlukan) |
Keputusan autentikasi adalah allow atau deny. |
clientAuthenticationName |
Nama autentikasi klien (nama identitas). (Diperlukan saat decision diatur ke allow.) |
attributes |
Kamus dengan atribut. Kunci adalah nama atribut, dan nilainya adalah int/string/array. (Opsional ketika decision diatur ke allow.) |
expiration |
Tanggal kedaluwarsa dalam format waktu Unix. (Opsional ketika decision diatur ke allow.) |
errorReason |
Pesan kesalahan jika decision diatur ke deny. Kesalahan ini dicatat. (Opsional ketika decision diatur ke deny.) |
Contoh jenis atribut yang didukung
"num_attr_pos": 1,
"num_attr_neg": -1,
"str_attr": "str_value",
"str_list_attr": [
"str_value_1",
"str_value_2"
]
Semua jenis data yang benar (angka yang pas <int32/string/array_of_strings>) digunakan sebagai atribut. Dalam contoh, num_attr_posklaim , num_attr_neg, str_attr, dan str_list_attr memiliki jenis data yang benar dan digunakan sebagai atribut.