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:
| Tahap | Aktor | Aksi |
|---|---|---|
| 1 | Client | Mengarahkan user ke URL otorisasi IdP |
| 2 | IdP | User login & memberikan izin akses |
| 3 | IdP | Redirect ke URL Callback dengan parameter code |
| 4 | Server | Menukar code dengan access_token via API |
| 5 | Server | Menerima 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
stateuntuk 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_tokendi 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.