Menambah keamanan OAuth access keys dari Magento 2 REST API
Ketika membuat sebuah aplikasi pendukung berupa desktop atau mobile yang menggunakan REST API dari Magento 2, yang paling utama harus diperhatikan adalah masalah keamanan
Magento 2 memang telah menerapkan OAuth 1.0 (pada saat artikel ini ditulis), untuk mengamankan hampir semua endpoints nya. Sehingga setiap aplikasi pendukung berupa desktop atau mobile yang ingin mengakses endpoints tertentu harus memiliki consumer key, consumer secret, access token, dan access token secret.
Tetapi apakah yakin credential yang berada didalam aplikasi pendukung tidak dapat dilihat atau diakses oleh orang yang tidak diharapkan atau tidak bertanggung jawab?
Memang benar bahwa aplikasi desktop atau mobile akan di compile sebelum bisa dijalankan, tetapi pastinya bisa di decompile. Contoh nya seperti sebuah aplikasi android yang berupa file .apk dapat di decompile dan dilihat source nya dengan jelas. Sehingga jika credential tadi tertulis di source code, maka siap-siap akan dapat dilihat oleh orang lain yang mempunyai file .apk nya.
Pernah melihat informasi apa saja yang harus diisi ketika akan membuat OAuth client untuk Facebook dan Google?
Dapat terlihat pada dua screenshot diatas, Facebook dan Google mengharuskan kita untuk mengisi Key Hash atau Signing-certificate dan Package Name. Sehingga selain OAuth credentials, hal-hal lain juga dapat kita tambahkan untuk diverifikasi ketika API Client mengakses endpoints.
Dapat mencoba membuat sebuah modul/plugin Magento 2 untuk hal ini dengan input admin seperti contoh dibawah.
Untuk menambah verifikasi tadi, kita bisa menambahkan sebuah userContext. Dimana Authorization module di Magento 2 akan mengeksekusi semua userContext yang terdaftar dengan memanggil fungsi getUserId dan getUserType. Untuk hal ini, kita memungkinkan untuk menambahkan userContext setelah sortOrder 10 dan sebelum sortOrder 40 seperti terlihat pada gambar dibawah ditemukan dalam Webapi module.
Dari referensi gambar diatas, maka kita dapat membuah userContext baru seperti contoh terlihat pada gambar dibawah.
Kemudian verifikasi didalam ClientContext contoh pada gambar diatas, dapat berupa seperti terlihat pada gambar dibawah.
Dimana ketika false adalah verifikasi menurut kita gagal dan akan menyatakan bahwa Invalid request untuk API Client response.
Tugas selanjutnya dari developer aplikasi pendukung adalah mengirim informasi yang dibutuhkan ketika melakukan request terhadap Magento 2 REST API sehingga lolos verifikasi.
Berbagai macam verifikasi terhadap API Client request dapat kita lakukan tergantung kebutuhan dan kemampuan sehingga tercapai tingkat keamanan yang lebih mumpuni terhadap akses dan data Magento 2 REST API kita.
Tidak 100% celah keamanan dapat kita cegah seiring berjalannya waktu, sehingga tugas developer untuk terus meningkatkan pengetahuan dalam melakukan implementasi keamanan yang memadai.
Semoga cukup penjelasan dalam artikel ini dapat memberi dasar pencerahan untuk meningkatkan keamanan instalasi Magento 2 REST API Anda.
— enjoy