Membedah arsitektur Authentik: server, worker, PostgreSQL, Redis, dan outpost, memahami konsep inti seperti tenant, application, provider, flow, stage, dan policy, mengikuti alur autentikasi end-to-end dari browser hingga token, dan glosarium istilah kunci.

Setelah di episode 1 kita memahami mengapa Authentik dibutuhkan — satu pintu masuk untuk banyak aplikasi — pada episode kali ini kita membedah bagaimana Authentik bekerja di balik layar. Ini episode paling penting sebelum menyentuh konfigurasi: tanpa arsitektur, semua tombol di UI Authentik hanyalah hafalan yang mudah salah terpakai.
Kita akan memetakan komponen-komponen arsitektur, memahami konsep inti (tenant, application, provider, flow, stage, policy, user & group), lalu mengikuti perjalanan satu permintaan dari browser hingga kembali membawa token. Seperti pilot yang wajib paham bagaimana sayap bekerja sebelum terbang, engineer yang memahami arsitektur Authentik akan jauh lebih cepat men-debug masalah di episode-episode berikutnya.
Authentik tidak pernah berjalan sendirian. Ia adalah satu titik koordinasi di antara beberapa komponen. Mari bedah satu per satu.
Jantungnya adalah proses server — aplikasi web yang melayani tiga hal: API (ujung tombak untuk web UI dan integrasi), web UI (antarmuka admin dan portal login pengguna), dan eksekusi flows. Secara default ia mendengarkan di port 9000. Image-nya ghcr.io/goauthentik/server. Semua permintaan dari browser maupun aplikasi pada akhirnya berujung pada server.
Worker adalah proses pendamping yang menjalankan tugas asinkron: sinkronisasi sumber (LDAP, social login), pengiriman email, task terjadwal, dan pekerjaan background lainnya. Ia memakai image yang sama dengan server (ghcr.io/goauthentik/server) hanya dengan perintah command: worker. Jika kalian melihat perilaku aneh seperti email tidak terkirim atau sinkronisasi macet, cek dulu log worker dengan docker compose logs -f worker.
Semua data persisten Authentik — konfigurasi, user, group, aplikasi, provider, flow, stage, policy, dan event — disimpan di PostgreSQL. Ini sumber kebenaran tunggal (source of truth). Kehilangan database berarti kehilangan segalanya, jadi episode backup akan menjadikan PostgreSQL prioritas utama.
Redis berperan ganda: cache (session, hasil policy, dan data yang sering dibaca) dan message queue (menyalurkan tugas dari server ke worker). Karena berisi data sementara, Redis bisa dibangun ulang tanpa kehilangan data — tapi tanpa Redis, Authentik tidak akan berfungsi normal.
Outpost adalah komponen yang berjalan di luar server inti dan berkomunikasi dengannya untuk melayani kebutuhan khusus. Dua jenis utama: proxy outpost (berdiri di depan aplikasi untuk forward auth, image ghcr.io/goauthentik/proxy) dan LDAP outpost (menyajikan user Authentik sebagai direktori LDAP untuk aplikasi warisan). Outpost bisa berjalan embedded di dalam server (default untuk lab) atau terpisah di host atau Kubernetes lain (untuk produksi).
UI Authentik terdiri dari dua wajah: admin interface (tempat kalian mengelola tenant, user, flow, aplikasi — diakses oleh admin) dan interface pengguna (tempat pengguna mengelola profil, perangkat MFA, dan aplikasi yang tersedia). Episode 3 akan membawa kalian ke sana.
Beberapa istilah akan kalian temui terus-menerus. Pahami sekarang agar tidak tersesat nanti:
Flow adalah pembeda utama Authentik dibanding IdP lain. Setiap flow punya designation (penunjukan) yang menentukan tujuan dan cara dipanggilnya:
Setiap flow dirangkai dari stages: identification, password, authenticator validation, user write, consent, email, prompt, deny, dan lainnya. Episode 4 akan membedah seluruhnya.
Inilah momen "semuanya menyatu". Ikuti perjalanan satu permintaan:
https://grafana.example.com) yang terintegrasi OIDC dengan Authentik.Browser Aplikasi (SP) Authentik
| 1. buka app | |
|-------------------->| |
| 2. redirect ke auth| |
|<--------------------| |
| 3. execute flow |--------------------->|
| 4. identification + password + MFA |
|<------------------->| |
| 5. policies evaluasi -> 6. consent |
| 7. authorization code ->| |
|<--------------------| 8. tukar code -> |
| | <- id token + AT |
| | 9. halaman aplikasi |Important
Perhatikan bahwa aplikasi tidak pernah melihat password pengguna. Semua kredensial diproses oleh Authentik; aplikasi hanya menerima token dan identitas. Inilah inti pola SSO modern: satu tempat mengelola kredensial, banyak aplikasi mengonsumsi identitas.
| Istilah | Arti Singkat |
|---|---|
| IdP | Identity Provider — pihak yang menerbitkan identitas |
| SP | Service Provider — aplikasi yang mengonsumsi identitas |
| Flow | Perjalanan autentikasi untuk satu tujuan |
| Stage | Blok bangunan terkecil dalam flow |
| Policy | Logika bersyarat boleh/tidak |
| Tenant | Namespace terisolasi untuk branding dan konfigurasi |
| Outpost | Komponen remote proxy/LDAP di luar server inti |
| Provider | Implementasi protokol (OIDC, SAML, LDAP, Proxy, SCIM) |
| Source | Koneksi ke identitas eksternal (Google, GitHub, LDAP) |
Pada episode 2 ini kalian telah memetakan arsitektur Authentik: server (API + web UI + eksekusi flow), worker (tugas asinkron), PostgreSQL (sumber kebenaran data), Redis (cache dan message queue), serta outposts (proxy dan LDAP) yang bisa berjalan embedded atau terpisah. Kalian juga mengenali konsep inti — tenant, application, provider, source, flow, stage, policy, user & group — dan mengikuti alur login OIDC end-to-end dari aplikasi, ke endpoint authorization, melalui flow dan policies, hingga kembali membawa token.
Poin yang harus kalian bawa:
Di episode 3 selanjutnya kita akan mulai beraksi: memasang Authentik dengan Docker Compose — menyusun stack server, worker, PostgreSQL, Redis, dan proxy, mengelola secret lewat file .env, mem-bootstrap admin, dan memverifikasi UI Authentik pertama kalian. Sampai jumpa di episode 3!