Panduan Teknis Implementasi API Auth Callback: Alur & Keamanan

Definisi dan Alur Kerja API Auth Callback

API Auth Callback adalah endpoint URL pada server aplikasi Anda yang berfungsi sebagai penerima respons dari penyedia layanan identitas (Identity Provider/IdP) setelah pengguna memberikan otorisasi. Dalam alur OAuth 2.0 atau OpenID Connect, callback ini menerima code atau token yang kemudian ditukar oleh server Anda dengan akses data pengguna.

Alur Transaksi Data

Proses ini mengikuti alur komunikasi server-ke-server yang krusial untuk menjaga keamanan kredensial pengguna. Berikut adalah tabel tahapan alur callback:

TahapAktorAksi
1ClientMengarahkan user ke URL otorisasi IdP
2IdPUser login & memberikan izin akses
3IdPRedirect ke URL Callback dengan parameter code
4ServerMenukar code dengan access_token via API
5ServerMenerima token & menyimpan sesi user

Implementasi Teknis (Node.js/Express)

Berikut adalah contoh implementasi endpoint callback yang aman untuk menangani kode otorisasi:

app.get('/auth/callback', async (req, res) => { const { code, state } = req.query; if (state !== storedState) return res.status(403).send('Invalid state'); try { const response = await axios.post('https://idp.com/token', { code, client_id, client_secret, grant_type: 'authorization_code' }); const { access_token } = response.data; // Simpan token ke database atau session res.redirect('/dashboard'); } catch (error) { res.status(500).send('Authentication failed'); } });

Praktik Keamanan Wajib

  • State Parameter: Selalu gunakan parameter state untuk mencegah serangan Cross-Site Request Forgery (CSRF).
  • HTTPS: Pastikan endpoint callback hanya dapat diakses melalui protokol HTTPS untuk mencegah intersepsi token.
  • Validasi Origin: Verifikasi bahwa request callback benar-benar berasal dari domain IdP yang sah.
  • Token Storage: Jangan pernah menyimpan access_token di sisi klien (browser) jika tidak diperlukan; simpan di sisi server (server-side session).

Troubleshooting Umum

Masalah yang sering muncul biasanya berkaitan dengan konfigurasi URL. Pastikan URL callback yang didaftarkan di dashboard pengembang IdP (seperti Google Cloud Console atau Auth0) sama persis dengan yang dikirimkan dalam parameter redirect_uri saat inisiasi otorisasi. Perbedaan satu karakter saja (misalnya trailing slash) akan menyebabkan error redirect_uri_mismatch.