M365Con 2027 – konferensi online gratis · 11–22 Jan 2027 · 120 sessions→ m365con.net

Blog · Mirko Peters

Cara Membangun Webhook Microsoft Graph yang Andal untuk SharePoint dan M365

By ·

Bangun webhook Microsoft Graph yang andal untuk SharePoint dan M365 dengan validasi aman, perpanjangan otomatis, dan pengiriman notifikasi yang tangguh.

Automatically translated with AI from the original post. Read the English original

▶ BLOGHow to Build ReliableMicrosoft Graph Webhoo……M365.FM
Titelbild: How to Build Reliable Microsoft Graph Webhooks for SharePoint and M365

Membangun webhook Microsoft Graph yang andal untuk SharePoint dan M365 bisa menjadi tantangan, bahkan bagi pengembang berpengalaman. Anda mungkin menemui masalah seperti kegagalan validasi jika endpoint Anda tidak mengembalikan token validasi atau tidak merespons dengan status 200 OK. Masalah umum meliputi endpoint yang diblokir firewall, salah konfigurasi jaringan, atau gangguan dari middleware. Percobaan ulang yang terlewat dan langganan yang kedaluwarsa sering terjadi ketika layanan tidak menerima permintaan validasi atau ketika endpoint tidak dapat diakses secara publik. Anda akan mempelajari cara menghindari jebakan tersebut dan membangun jalur notifikasi yang tangguh dan aman, lengkap dengan daftar periksa praktis serta praktik terbaik.

Poin Penting

Dasar-Dasar Webhook Microsoft Graph

Apa Itu Webhook Microsoft Graph

Webhook adalah permintaan HTTP yang dipicu oleh suatu peristiwa di sistem sumber dan dikirim ke sistem tujuan, sering kali disertai muatan data. Webhook bersifat otomatis, dengan kata lain, webhook dikirim secara otomatis saat peristiwanya terjadi di sistem sumber.

Anda menggunakan webhook Microsoft Graph untuk menerima notifikasi real-time tentang perubahan di lingkungan Microsoft 365 Anda. Artinya, Anda tidak perlu terus-menerus melakukan polling ke Microsoft Graph untuk mencari pembaruan. Sebaliknya, aplikasi Anda akan diberi tahu segera setelah sesuatu yang penting terjadi. Dengan cara ini, data Anda tetap mutakhir dan tersinkronisasi dengan data yang dapat diakses melalui Microsoft Graph. Cara ini juga menghilangkan kebutuhan akan infrastruktur polling, yaitu ketika Anda sering mengirim permintaan ke Microsoft Graph untuk memeriksa perubahan terbaru.

Anda dapat mengatur notifikasi untuk berbagai jenis peristiwa, misalnya:

Misalnya, Anda mungkin ingin secara otomatis membuat akun di sistem pencatatan waktu pihak ketiga ketika pengguna baru bergabung dengan organisasi Anda. Anda juga dapat memicu pemrosesan konten, misalnya pelaporan biaya, ketika seseorang menambahkan file baru ke pustaka dokumen SharePoint atau folder OneDrive.

Mengapa Keandalan Itu Penting

Webhook Microsoft Graph berperan penting dalam menjaga integrasi SharePoint dan Microsoft 365 Anda tetap responsif dan mutakhir. Ketika jalur webhook Anda bekerja dengan andal, aplikasi Anda merespons perubahan secara real-time. Pengguna selalu melihat data terkini, yang meningkatkan pengalaman mereka dan mengurangi risiko informasi yang usang.

Namun, masalah keandalan dapat menimbulkan dampak serius:

Untuk membangun solusi yang tangguh, Anda sebaiknya menggabungkan webhook dengan delta query untuk melacak perubahan secara efisien. Anda juga perlu menyiapkan proses untuk memeriksa dan memperpanjang langganan secara berkala. Untuk sumber daya yang sering diperbarui, pengelompokan permintaan (batching) membantu mengelola beban.

Menyiapkan dan Memvalidasi Webhook

Menyiapkan Microsoft Graph Webhooks untuk SharePoint dan M365 melibatkan beberapa langkah penting. Anda perlu mendaftarkan webhook, menangani permintaan validasi, dan mengamankan endpoint Anda. Setiap langkah berperan penting untuk memastikan pipeline notifikasi Anda berjalan andal dan aman.

Mendaftarkan Microsoft Graph Webhooks

Anda memulai dengan membuat langganan webhook. Proses ini memungkinkan aplikasi Anda menerima notifikasi tentang perubahan pada sumber daya Microsoft 365. Ikuti langkah-langkah berikut untuk mendaftarkan webhook Anda:

  1. Buat endpoint yang dapat diakses publik dengan menggunakan HTTPS. Endpoint ini akan menerima notifikasi dari Microsoft Graph.

  2. Kirim permintaan POST ke endpoint /subscriptions di Microsoft Graph.

  3. Dalam permintaan langganan Anda, tentukan:

    • changeType: Jenis perubahan yang ingin Anda lacak, misalnya "created", "updated", atau "deleted".

    • notificationUrl: URL endpoint webhook Anda.

    • resource: Sumber daya yang ingin Anda pantau, misalnya "/users" atau "/drive/root".

    • expirationDateTime: Tanggal dan waktu saat langganan harus berakhir.

    • Properti opsional, seperti clientState, membantu Anda memverifikasi sumber notifikasi.

Contoh permintaan langganan:

POST https://graph.microsoft.com/v1.0/subscriptions
Authorization: bearer eyJ0eXAiOiJ[..]
Content-Type: application/json

{
  "changeType": "updated",
  "clientState": "SecretClientState",
  "notificationUrl": "https://yourdomain.com/api/notifications",
  "resource": "/users",
  "expirationDateTime": "2024-05-01T00:00:00.0000000+00:00"
}

Pastikan endpoint Anda dapat diakses publik dan diamankan dengan HTTPS. Microsoft Graph memvalidasi URL notifikasi sebelum menyelesaikan langganan. Anda perlu memperbarui langganan secara berkala agar tetap menerima notifikasi. Endpoint Anda harus memberikan respons HTTP yang tepat waktu dan konsisten agar tidak ada notifikasi yang terlewat.

Berikut ringkasan kolom yang wajib diisi untuk pendaftaran:

Kolom

Deskripsi

changeType

Menentukan jenis perubahan yang memicu notifikasi (misalnya 'updated').

clientState

String kustom yang membantu memvalidasi sumber notifikasi.

notificationUrl

Endpoint tempat notifikasi akan dikirim.

resource

Sumber daya yang dipantau (misalnya '/users').

expirationDateTime

Tanggal dan waktu saat langganan akan berakhir.

validationToken

Token yang harus dikembalikan dalam respons untuk memvalidasi permintaan langganan.

Menangani Permintaan Validasi

Setelah Anda mendaftarkan webhook, Microsoft Graph mengirimkan permintaan validasi ke endpoint Anda. Anda harus merespons dengan benar agar proses langganan selesai. Ketika endpoint Anda menerima permintaan GET dengan parameter kueri validationToken, Anda perlu menggemakan token tersebut dalam isi respons sebagai teks biasa dan mengembalikan status 200 OK.

Jenis Permintaan

URL

Parameter Kueri

Status Respons yang Diharapkan

Content-Type

Isi Respons

GET

https://yourdomain.com

validationToken=1234

200 OK

text/plain

1234

💡 Tips: Merespons permintaan validasi dengan cepat dan tepat memastikan langganan webhook Anda aktif tanpa kendala.

HTTPS dan Keamanan Endpoint

Mengamankan endpoint webhook Anda sangat penting. Microsoft Graph Webhooks memerlukan enkripsi HTTPS untuk melindungi data sensitif selama komunikasi. Anda sebaiknya memverifikasi permintaan masuk dengan memeriksa tanda tangan yang dibuat menggunakan kunci rahasia bersama. Gunakan jalur yang kompleks dan dibuat secara acak untuk URL callback Anda agar lebih sulit ditebak.

Setiap callback webhook menggunakan JSON Web Token (JWT) yang ditandatangani pada header Authentication dari permintaan HTTPS yang masuk. Anda dapat menggunakan teknik validasi JWT OpenID Connect standar untuk memastikan integritas token.

Anda wajib menggunakan HTTPS untuk semua endpoint webhook. Persyaratan ini melindungi data Anda dan memastikan kepatuhan terhadap standar keamanan Microsoft. Mengamankan endpoint Anda membantu mencegah akses tidak sah dan serangan.

Dengan mengikuti langkah-langkah ini, Anda menyiapkan pipeline Microsoft Graph Webhooks yang andal dan aman untuk SharePoint dan M365. Anda memastikan aplikasi menerima notifikasi dengan cepat dan aman.

Memproses dan Mengamankan Notifikasi

Setelah Anda menyiapkan endpoint webhook, Anda perlu memproses notifikasi yang masuk secara aman dan andal. Langkah ini memastikan bahwa aplikasi Anda hanya menerima permintaan yang valid dan Anda tidak pernah melewatkan pembaruan penting dari Microsoft Graph Webhooks.

Mengautentikasi dan Memverifikasi Token JWT

Setiap notifikasi dari Microsoft Graph menyertakan JSON Web Token (JWT) pada header Authorization. Anda wajib memverifikasi token ini sebelum memproses payload apa pun. Validasi JWT yang tepat melindungi sistem Anda dari permintaan yang tidak sah atau telah dimodifikasi.

Ikuti langkah-langkah berikut untuk mengautentikasi dan memverifikasi token JWT:

  1. Periksa bahwa token belum kedaluwarsa. Token menyertakan waktu kedaluwarsa, dan Anda sebaiknya menolak token yang telah melewati waktu tersebut.

  2. Pastikan bahwa token diterbitkan oleh Microsoft identity platform. Validasi tanda tangan token untuk memastikan token tidak diubah.

  3. Pastikan klaim "audience" dalam token cocok dengan ID aplikasi Anda. Langkah ini memastikan token memang ditujukan untuk aplikasi Anda.

  4. Verifikasi bahwa properti azp (authorized party) sesuai dengan nilai yang diharapkan untuk aplikasi Anda.

Tips: Selalu gunakan pustaka tepercaya untuk validasi JWT. Pustaka ini membantu Anda menghindari kesalahan umum dan menjaga keamanan aplikasi Anda.

Anda juga sebaiknya waspada terhadap kerentanan keamanan umum saat menangani token JWT:

Dengan mengikuti langkah-langkah dan kewaspadaan ini, Anda memastikan hanya notifikasi yang sah yang sampai ke aplikasi Anda.

Menangani Payload Notifikasi

Setelah Anda mengautentikasi notifikasi, Anda perlu memproses payload-nya secara aman. Payload notifikasi berisi informasi tentang peristiwa yang memicu webhook. Untuk menjaga integritas data dan mencegah masalah keamanan, Anda sebaiknya:

Catatan: Memvalidasi dan menyanitasi payload melindungi sistem Anda dari data yang tidak terbentuk dengan benar dan ancaman keamanan.

Menerapkan Logika Retry dan Backoff

Masalah jaringan atau gangguan sementara dapat menyebabkan pengiriman notifikasi gagal. Untuk menghindari kehilangan data, Anda memerlukan strategi retry dan backoff yang andal. Microsoft merekomendasikan penggunaan exponential backoff dan antrean terstruktur untuk mengelola retry.

Berikut adalah tabel yang merangkum mekanisme retry dan backoff yang umum:

Jenis Mekanisme

Deskripsi

Exponential Backoff

Memperpanjang waktu tunggu di antara retry secara eksponensial setelah setiap kegagalan.

Antrean Utama

Antrean awal tempat peristiwa webhook dipublikasikan, misalnya main.webhook.queue.

Antrean Percobaan Ulang

Antrean untuk menangani percobaan ulang, dengan nama retry.webhook.queue-M, di mana M adalah nomor percobaan.

Antrean Pembatalan

Antrean terakhir untuk pesan yang gagal setelah semua percobaan ulang, misalnya abandon.webhook.queue.

Perhitungan TTL

Waktu hidup (time-to-live/TTL) untuk setiap antrean percobaan ulang menggunakan rumus: {interval} + {current_retry_attempt} ^ 4.

Header x-retry

Header yang melacak jumlah percobaan ulang untuk setiap pesan.

Dead Letter Exchange

Exchange yang menerima pesan yang tidak dapat diulang lagi, lalu mengarahkannya ke antrean pembatalan.

Jika Anda tidak menerapkan logika percobaan ulang dan backoff yang tepat, aplikasi Anda berisiko kehilangan notifikasi atau menimbulkan inkonsistensi data. Permintaan yang gagal atau pembatasan laju (rate limiting) dapat membuat Anda tidak menerima pembaruan penting. Exponential backoff membantu Anda mengelola permintaan yang dibatasi dan mengurangi risiko sistem Anda, atau Microsoft Graph Webhooks, menjadi kewalahan.

🛡️ Praktik Terbaik: Selalu lacak jumlah percobaan ulang dan pindahkan pesan yang gagal ke antrean pembatalan setelah beberapa kali percobaan ulang. Pendekatan ini memungkinkan Anda menyelidiki dan menyelesaikan masalah yang terus berulang tanpa kehilangan data.

Dengan melakukan autentikasi token JWT, memvalidasi payload, dan menerapkan logika percobaan ulang yang andal, Anda membangun alur notifikasi yang aman dan tangguh. Langkah-langkah ini membantu Anda memproses setiap notifikasi dari Microsoft Graph Webhooks secara aman dan efisien.

Mengelola Langganan dan Pelacakan Perubahan

Mengotomatisasi Pembaruan Langganan

Anda perlu menjaga langganan webhook tetap aktif agar tidak kehilangan notifikasi. Langganan Microsoft Graph kedaluwarsa setelah jangka waktu tertentu. Jika Anda tidak memperbaruinya, aplikasi Anda berhenti menerima pembaruan. Anda dapat mengotomatisasi pembaruan dengan beberapa metode:

Tips: Mengotomatisasi pembaruan mengurangi pekerjaan manual dan memastikan sistem Anda tetap terhubung ke Microsoft Graph.

Pemantauan dan Peringatan

Anda harus memantau kondisi alur webhook Anda. Atur peringatan untuk memberi tahu Anda jika langganan gagal diperbarui atau jika endpoint berhenti merespons. Gunakan logging untuk melacak notifikasi yang masuk dan upaya pembaruan. Hal ini membantu Anda mendeteksi masalah sebelum memengaruhi pengguna.

🛎️ Pemantauan proaktif membantu Anda memperbaiki masalah dengan cepat dan menjaga integrasi Anda tetap andal.

Menggunakan Delta Query untuk Pelacakan Perubahan

Delta query membantu Anda melacak perubahan pada resource SharePoint dan M365 secara efisien. Anda dapat menggunakannya untuk menerima hanya data baru atau yang diperbarui, sehingga mengurangi kebutuhan polling yang sering dan menurunkan risiko pembatasan (throttling).

Namun, delta query memiliki beberapa keterbatasan:

Keterbatasan/Tantangan

Deskripsi

Konteks OData

Dikembalikan secara tidak benar ketika melacak perubahan pada relasi.

Ekstensi Skema

Tidak dikembalikan dengan pernyataan $select, tetapi dikembalikan tanpa pernyataan tersebut.

Ekstensi Terbuka

Klien tidak dapat melacak perubahan pada ekstensi terbuka maupun ekstensi skema yang terdaftar.

Catatan: Selalu uji implementasi delta query Anda untuk menangani keterbatasan ini dan memastikan pelacakan perubahan yang akurat.

Dengan mengotomatisasi pembaruan, memantau alur Anda, dan menggunakan delta query, Anda membangun sistem webhook yang andal dan efisien untuk SharePoint dan M365.

Anda dapat membangun webhook Microsoft Graph yang andal dengan mengikuti proses yang jelas. Mulailah dengan membuat langganan dan menggunakan delta query untuk melacak perubahan. Otomatisasi proses pembaruan langganan dan pantau pipeline Anda terhadap potensi masalah. Utamakan validasi, keamanan, dan ketahanan di setiap tahap. Untuk kesiapan produksi, tinjau checklist ini:

Jenis Pengukuran

Deskripsi

Pemindaian Keamanan CI Pipeline

Pindai kerentanan sebelum penerapan.

Jejak Audit Otomatis

Catat setiap build dan penerapan untuk kepatuhan dan audit.

Terapkan praktik terbaik ini agar integrasi SharePoint dan M365 Anda tetap andal.

Pertanyaan Umum

Bagaimana cara memperbarui langganan webhook Microsoft Graph yang sudah kedaluwarsa?

Kirim permintaan PATCH ke endpoint Microsoft Graph /subscriptions/{id}. Perbarui field expirationDateTime. Jadwalkan proses ini agar berjalan setiap hari. Dengan cara ini, langganan Anda tetap aktif dan notifikasi tidak terlewat.

Apa yang harus dilakukan jika endpoint webhook Anda gagal validasi?

Pastikan endpoint Anda mengembalikan validationToken sebagai teks biasa di badan respons. Balas dengan status 200 OK. Pastikan endpoint Anda dapat diakses publik dan menggunakan HTTPS.

Bagaimana cara mengamankan endpoint webhook Anda?

Gunakan HTTPS untuk semua endpoint. Validasi token JWT pada setiap permintaan. Batasi akses dengan autentikasi dan daftar IP yang diizinkan. Pantau aktivitas yang tidak biasa. Audit pengaturan keamanan Anda secara berkala.

Mengapa Anda perlu menggunakan delta query dengan webhook?

Delta query membantu Anda melacak hanya data baru atau yang berubah. Cara ini mengurangi penggunaan bandwidth dan meningkatkan performa. Anda tidak perlu mengunduh seluruh data setiap kali, sehingga integrasi Anda menjadi lebih cepat dan efisien.

Apa cara terbaik untuk menangani notifikasi webhook yang gagal?

Terapkan logika retry dengan exponential backoff. Lacak percobaan ulang menggunakan header atau antrean. Pindahkan pesan yang gagal setelah beberapa kali percobaan ke antrean abandon. Selidiki kegagalan ini untuk mencegah kehilangan data.

Microsoft Graph Change notifications and webhooks SharePoint OneDrive Microsoft 365

Related articles

RSS