OPA Auth
opa-auth adalah service forward-auth middleware RAGA, dibangun di atas Bun + Express 5. Traefik (reverse proxy) memanggil service ini untuk setiap request masuk sebelum diteruskan ke service tujuan — opa-auth memvalidasi token JWT lewat Redis, meminta keputusan otorisasi ke OPA Engine, lalu meneruskan identitas user (role, nama, grant, ID) ke service downstream lewat response header.
opa-auth adalah satu dari tiga komponen subsistem OPA di RAGA:
| Komponen | Peran |
|---|---|
| OPA Config | Menjalankan OPA server & menyimpan policy Rego (mesin keputusan) |
| OPA Data | Menyinkronkan data role & grant dari User Service ke OPA |
| OPA Auth | Menjadi gate di depan Traefik — memanggil OPA untuk setiap request |
Tech Stack
| Layer | Teknologi |
|---|---|
| Runtime | Bun 1 |
| Framework | Express 5 (TypeScript) |
| Cache | Redis DB 1 (ioredis) — validasi whitelist token |
| Policy Engine | OPA (Open Policy Agent) |
| Secret Management | Infisical SDK v5 |
Detail environment variable, endpoint, dan diagram alur lengkap ada di halaman Teknis.
Alur Singkat
- Traefik meneruskan request ke opa-auth beserta header
x-forwarded-*danAuthorization. - opa-auth mengecek token di Redis (whitelist), lalu bertanya ke OPA (
POST /v1/data/verify_access) apakah request ini diizinkan. - Jika diizinkan, opa-auth mengembalikan
200 OKbeserta header identitas user (X-Auth-User-*) yang dibaca Traefik dan diteruskan ke service tujuan — service downstream tidak perlu decode JWT sendiri. - Jika ditolak, opa-auth mengembalikan
401(token invalid/expired) atau403(tidak diizinkan).
Ringkasan
opa-auth adalah checkpoint tunggal yang dilewati setiap request di platform RAGA sebelum sampai ke service manapun — menjadikannya komponen paling kritikal dalam rantai auth: kalau OPA mengizinkan, request lolos; kalau tidak, request berhenti di sini.