Permintaan API JOSS harus disertai autentikasi, atau akan gagal dengan respons error 401 Unauthorized. Signature adalah parameter keamanan yang perlu dihasilkan di Backend Anda untuk memverifikasi keaslian permintaan. Sebelum menghasilkan Signature, Anda perlu mempersiapkan semua komponen yang diperlukan.Menghasilkan Signature#
Menghasilkan Digest#
Hash dari body JSON permintaan Anda adalah salah satu komponen yang diperlukan untuk menghasilkan Signature. Untuk menghasilkan digest, hitung hash SHA256 base64 dari body JSON Anda.Untuk API yang menggunakan metode GET dan DELETE, Anda tidak perlu menghasilkan Digest.
Menetapkan Request Target#
Nilai dari field Request-Target adalah resource-path JOSS tanpa domain. Misalnya, resource-path yang diakses oleh klien: <https://sandbox.joss.kemnaker.go.id/api/v1/companies>
, maka nilai Request-Target adalah /api/v1/companies
JOSS juga menghasilkan Signature saat mengirimkan HTTP Notification. Anda perlu memverifikasi keasliannya untuk memastikan bahwa permintaan Notifikasi berasal dari JOSS. Untuk Request-Target, JOSS akan menggunakan resource-path dari URL Notifikasi Anda.Contoh, jika Anda mengatur URL Notifikasi <https://yourdomain.com/api/company/notifications>
, maka Request-Target adalah /api/company/notifications
Komponen Signature#
Parameter | Description |
---|
Client-Id | Client ID yang didapatkan dari Kementerian Ketenagakerjaan Republik Indonesia. |
Request-Id | String acak unik yang dihasilkan dari sisi klien untuk melindungi dari duplikasi permintaan. |
Request-Timestamp | Timestamp permintaan dalam format UTC ISO8601 UTC+0. Artinya, jika Anda ingin melanjutkan transaksi di UTC+7 (WIB), klien perlu mengurangi waktu dengan 7. Contoh: untuk melanjutkan transaksi pada 22 September 2022 pukul 08:51:00 WIB, timestamp-nya adalah 2022-09-22T01:51:00Z |
Request-Target | resource-path JOSS tanpa domain. Misalnya: /api/v1/companies |
Digest | String yang di-encode dalam base64 dari body JSON yang di-hash menggunakan algoritma sha256 , atau skip jika permintaan tidak memiliki body. |
Menghasilkan Hash untuk Komponen Signature#
1.
Susun komponen signature menjadi satu komponen dengan nilai masing-masing yang dipisahkan oleh karakter |
. Jangan tambahkan |
di akhir string. Contoh format mentah:
20bd0244-7e6f-40c8-91a7-6a9c5b787f76|c6ad317b-f21e-43ac-9184-fff4ce087e3c|2022-05-10T22:10:37Z|/api/v1/companies|RBNvo1WzZ4oRRq0W9+hknpT7T8If536DEMBg9hyq/4o=
2.
Hitung HMAC-SHA256 dari semua komponen di atas menggunakan secret key dari Kementerian Ketenagakerjaan Republik Indonesia. Contoh:
c91600a51c17cee10aa97c4361e61161ed3a1b88d0dcf9c05c0c25757a430918
Signature yang dihasilkan hanya berlaku selama 5 menit.
Autentikasi Permintaan#
Untuk mengautentikasi apakah permintaan sah dan valid, API harus dapat memverifikasi apakah permintaan berasal dari klien yang valid. Jadi, yang perlu dilakukan oleh permintaan API adalah menambahkan parameter Client-Id
, Request-Id
, Request-Timestamp
, dan Signature
ke header permintaan.Parameter | Deskripsi |
---|
Client-Id | Akan berisi Client ID yang didapatkan dari Kementerian Ketenagakerjaan Republik Indonesia. |
Request-Id | Akan berisi string acak unik yang dihasilkan dari sisi klien untuk melindungi dari duplikasi permintaan. |
Request-Timestamp | Akan berisi timestamp permintaan dalam format UTC ISO8601 UTC+0. Artinya, untuk melanjutkan transaksi di UTC+7 (WIB), klien perlu mengurangi waktu dengan 7. Contoh: untuk melanjutkan transaksi pada 22 September 2022 pukul 08:51:00 WIB, timestamp-nya adalah 2022-09-22T01:51:00Z |
Signature | HMACSHA256={signature} akan berisi parameter keamanan yang perlu dihasilkan di Backend klien dan ditempatkan ke header permintaan untuk memastikan bahwa permintaan tersebut berasal dari klien yang valid. Signature dijelaskan di atas. |
Contoh Kode#