~/blog/membuat-key-authentication-kong
Published on

Membuat Key Authentication Kong API Gateway

book2 minutes read

Melanjutkan dari tulisan saya yang kemarin Instalasi dan Konfigurasi Kong disini akan kita lanjutkan dengan membuat key-auth atau kunci autentikasi untuk mengakses API pada kong gateway.

Yang perlu anda ketahui tentang istilah – istilah dalam kong sebelum kita lanjut yaitu

plugin program tambahan untuk menambah suatu fungsionalitas pada kong.

Service untuk mendefinisikan suatu servis upstream API / microservice.

Route mengatur url yang di publikasi kong yang mengarah ke upstream service.

upstream service servis API server yang akan dilewatkan kong gateway.

Okee sebelum lanjut, disini saya menggunakan tools httpie untuk mengakses endpoint admin dari kong.

Langkah 1: Buat Consumers

Untuk membuat key, kita harus membuat consumers terlebih dahulu

$ http :8001/consumers username=Terserah

HTTP/1.1 201 Created
Access-Control-Allow-Origin: *
Connection: keep-alive
Content-Length: 105
Content-Type: application/json; charset=utf-8
Date: Sat, 24 Nov 2018 02:02:05 GMT
Server: kong/0.14.1

{
    "created_at": 1543024925,
    "custom_id": null,
    "id": "a475a0a7-9fe8-49d2-9886-8bc48c0a8e98",
    "username": "Terserah"
}

Langkah 2: Buat Key

Ada 2 cara membuat kunci yaitu otomatis di generate oleh kong atau kita bisa mendefinisikan nya sendiri. Tapi jika kita baru pertama kali membuat key, direkomendasikan untuk membuatnya secara otomatis. Namun jika kita melakukan migrasi / cloning server kita bisa definisikan sendiri key nya agar sama dengan yang sebelumnya. Sebelum kita buat key, kita ambil id atau username dari consumers yang telah kita buat tadi dan meletakkan nya pada url setelah /consumers/

$ http post :8001/consumers/{id atau username consumers}/key-auth

HTTP/1.1 201 Created
Access-Control-Allow-Origin: *
Connection: keep-alive
Content-Length: 167
Content-Type: application/json; charset=utf-8
Date: Sat, 24 Nov 2018 01:25:38 GMT
Server: kong/0.14.1

{
    "consumer_id": "a475a0a7-9fe8-49d2-9886-8bc48c0a8e98",
    "created_at": 1543022783000,
    "id": "0fbed2fd-3f74-4ee2-941a-59754665d459",
    "key": "hzwtr9oJwfgO0VSCrZJ6zzkvV6q8S7Ze"
}

Langkah 3: Tambahkan Plugin

$ http :8001/plugins name=key-auth config.key_names=apikey

HTTP/1.1 201 Created
Access-Control-Allow-Origin: *
Connection: keep-alive
Content-Length: 224
Content-Type: application/json; charset=utf-8
Date: Sat, 24 Nov 2018 01:29:32 GMT
Server: kong/0.14.1

{
    "config": {
        "anonymous": "",
        "hide_credentials": false,
        "key_in_body": false,
        "key_names": [
            "apikey"
        ],
        "run_on_preflight": true
    },
    "created_at": 1543022972000,
    "enabled": true,
    "id": "7216fbfc-7e38-4368-bf9a-19b21559aae7",
    "name": "key-auth"
}

Jika kita tidak menyertakan service_id atau route_id berarti plugin key-auth ini bersifat global, jadi semua request API yang dilakukan akan membutuhkan key yang kita buat global tersebut.

Langkah 4: Gunakan API key

Kita bisa menambahkan nya pada header

$ http :8000/v1/contoh-url apikey:hzwtr9oJwfgO0VSCrZJ6zzkvV6q8S7Ze

Atau pada querystring paramater

$ http://localhost:8000/v1/contoh-url?apikey=hzwtr9oJwfgO0VSCrZJ6zzkvV6q8S7Ze

Tambahan

Jika kita ingin melihat daftar key yang telah dibuat

$ http :8001/key-auths

Jika kita ingin melihat daftar consumers yang telah dibuat

$ http :8001/consumers

Jika kita ingin menghapus key yang dibuat

$ http delete :8001/consumers/{id atau username consumers}/key-auth/{id key-auth}

dah gitu aja, see ya~