Mengamankan payload webhook dengan rahasia

Selesai

Setelah fungsi Anda dikonfigurasi untuk menerima payload, hal ini akan mendengarkan setiap payload yang dikirim ke titik akhir yang dikonfigurasikan. Untuk alasan keamanan, Anda mungkin ingin membatasi permintaan kepada mereka yang datang dari GitHub. Ada beberapa cara untuk melakukan hal ini. Misalnya, Anda dapat memilih untuk menyetujui permintaan dari alamat IP GitHub. Metode yang lebih mudah adalah mengatur token rahasia dan memvalidasi permintaan menggunakan token ini.

Dalam skenario contoh, manajemen Departemen IT Anda senang dengan fungsi yang dipicu webhook yang telah Anda buat di aplikasi Azure Functions. Semua informasi mengenai pembaruan wiki perusahaan dipilah oleh fungsi itu dan dikirim ke bisnis, setiap kali peristiwa Gollum dipicu. Manajemen telah menanyakan seberapa aman informasi yang dikirimkan dari GitHub. Mereka telah meminta Anda untuk menemukan cara untuk mengamankan informasi, dan memverifikasi apakah GitHub yang mengirim pembaruan.

Dalam unit ini, Anda akan mempelajari cara mengamankan payload webhook dengan rahasia dan memvalidasi payload dari GitHub.

Rahasia webhook

Mengatur rahasia webhook memungkinkan Anda untuk memastikan bahwa permintaan POST yang dikirim ke URL payload berasal dari GitHub. Jika Anda menetapkan rahasia, anda akan menerima header x-hub-signature dalam permintaan POST wehook.

Di GitHub, Anda dapat mengatur bidang rahasia dengan membuka repositori tempat Anda menyiapkan webhook, lalu mengedit webhook. Kami akan menunjukkan kepada Anda bagaimana melakukannya untuk contoh kita dalam latihan berikutnya.

Validasi payload dari GitHub

Setelah token rahasia Anda ditetapkan, GitHub menggunakannya untuk membuat tanda tangan hash untuk setiap payload. Tanda tangan hash ini diteruskan bersama dengan setiap permintaan dalam header sebagai x-hub-signature.

Ketika fungsi menerima permintaan, Anda perlu menghitung hash menggunakan rahasia Anda, dan memastikan bahwa hasilnya cocok dengan hash dalam header permintaan. GitHub menggunakan pengilahan hex HMAC SHA1 untuk menghitung hash, jadi Anda harus menghitung hash dengan cara yang sama, menggunakan kunci rahasia dan isi payload Anda. Tanda tangan hash dimulai dengan teks sha1=.