JOSS
    JOSS
    • Gambaran Umum
    • Autentikasi
    • Referensi Data
    • Endpoint API
      • Perusahaan
        • Put Company
        • Find Company
        • Delete Company
      • Lowongan Pekerjaan
        • Put Job Vacancy
        • Find Job Vacancy
        • Delete Job Vacancy

    Autentikasi

    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#

    ParameterDescription
    Client-IdClient ID yang didapatkan dari Kementerian Ketenagakerjaan Republik Indonesia.
    Request-IdString acak unik yang dihasilkan dari sisi klien untuk melindungi dari duplikasi permintaan.
    Request-TimestampTimestamp 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-Targetresource-path JOSS tanpa domain. Misalnya: /api/v1/companies
    DigestString 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 Header HTTP#

    ParameterDeskripsi
    Client-IdAkan berisi Client ID yang didapatkan dari Kementerian Ketenagakerjaan Republik Indonesia.
    Request-IdAkan berisi string acak unik yang dihasilkan dari sisi klien untuk melindungi dari duplikasi permintaan.
    Request-TimestampAkan 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
    SignatureHMACSHA256={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#

    PHP
    Java
    Python
    Go
    Previous
    Gambaran Umum
    Next
    Referensi Data
    Built with