Keamanan antarmuka pemrograman aplikasi web

**Keamanan antarmuka pemrograman aplikasi web** adalah sistem pengamanan pada akses pengguna atau integrasi sistem akses ke antarmuka pemrograman aplikasi web tersebut.

Dengan kemudahan integrasi antarmuka pemrograman aplikasi web, yang menjadi masalah adalah memastikan otentikasi dan otorisasi yang tepat untuk akses antarmuka pemrograman aplikasi web tersebut. Antarmuka pemrograman aplikasi web dapat dibuat hanya memberikan akses pada antarmuka pemrograman aplikasi web tertentu atau modul tertentu perlu memiliki hak akses berdasarkan otentikasi dan otorisasi yang tepat. Skema otentikasi yang tepat memungkinkan pembuat antarmuka pemrograman aplikasi web (antarmuka pemrograman aplikasi web atau layanan) untuk mengidentifikasi pengguna dengan benar (pengguna atau aplikasi yang mengakses) dan mengevaluasi tingkat akses otorisasi. Dengan kata lain, pengguna dapat menggunakan metode akses tertentu (logika tertentu) berdasarkan akses atau kredensial yang telah diberikan.

## Metode otentikasi dan otorisasi
Web aplikasi selalu memerlukan otentikasi dari pengguna. Otentikasi bisa dilakukan dengan memasukkan kata sandi (*password*), baik statis maupun dinamis (*[[Algoritme Kata Sandi Sekali-pakai berbasis Waktu|one-time password]]*), yang prinsip dasarnya berupa rahasia yang hanya diketahui oleh pengguna dan *remote server* saja. Berikut ini adalah metode-metode otentikasi dan otorisasi yang bisa digunakan:
*String statis, yaitu kata sandi yang disediakan oleh antarmuka pemrograman aplikasi web kepada pengguna akses.
* Token dinamis, yaitu metode pemberian token dengan memberikan waktu akses dari layanan otentikasi.
* Token yang didelegasikan ke pengguna, yaitu token untuk yang digunakan untuk masuk log (*login*) dan diberikan untuk otentikasi pengguna.
Metode di atas memberikan tingkat keamanan yang berbeda dan kemudahan integrasi. Sering kali, metode integrasi yang mudah akan menggunakan model keamanan terlemah.

Berikut ini penjelasan untuk metode-metode di atas:

### String statis
Dalam metode "string statis", pengguna atau klien antarmuka pemrograman aplikasi web disisipkan *string* sebagai token setiap kali memanggil. Metode ini sering disebut sebagai otentikasi dasar. Dari sudut pandang keamanan, otentikasi dasar tidak terlalu bagus dari segi keamanan karena mengirimkan kata sandi pengguna melalui jaringan dalam teks pada setiap halaman yang diakses (kecuali protokol tingkat rendah yang aman, seperti SSL) untuk mengenkripsi semua transaksi. Dengan demikian, pengguna menjadi sangat rentan terhadap penganalisis paket di internet.

### Token dinamis
Jenis token ini memberikan waktu simpan atau kedaluwarsa yang disisipkan ke dalam token. Token memiliki waktu kedaluwarsa akses yang disebut *time to live* (TTL). Jika token sudah kedaluwarsa, pengguna harus mendapatkan token baru untuk kembali mendapatkan akses. Metode antarmuka pemrograman aplikasi web memiliki algoritma pemeriksaan waktu kedaluwarsa, dan jika token sudah kedaluwarsa, permintaan untuk akses ke antarmuka pemrograman aplikasi web tidak bisa dilakukan. Contoh token tersebut adalah JSON Web Token.

### Token yang didelegasikan ke pengguna
Jenis token ini digunakan dalam sistem di mana aplikasi perlu mengakses antarmuka pemrograman aplikasi web dengan pengguna aplikasi tersebut, yaitu dengan menggunakan ID pengguna dan kata sandi ke aplikasi. Kemudian, pengguna mendapatkan token yang memberikan izin pengguna untuk mengakses antarmuka pemrograman aplikasi web.

Otorisasi OAuth 2.0 untuk memperoleh akses terbatas ke HTTP *Service*, baik atas nama pemilik dengan mengatur persetujuan akses, atau dengan memungkinkan aplikasi untuk mendapatkan akses atas namanya sendiri.

## Referensi