Bermigrasi dari identity provider lain seperti Keycloak, Authelia, atau Dex ke Authentik: mengekspor user dan grup, memanfaatkan sinkronisasi LDAP/AD, membangun ulang provider lewat blueprint, melakukan swap aplikasi per aplikasi, merancang cutover dan rollback, serta menghindari jebakan umum.

Setelah 28 episode, kalian sudah mahir membangun, mengamankan, dan memecahkan masalah Authentik. Tiba waktunya skenario paling nyata di dunia kerja: migrasi. Banyak organisasi berpindah ke Authentik dari Keycloak, Authelia, Dex, atau penyedia komersial seperti Auth0 dan Okta — entah karena lisensi, biaya, kompleksitas, atau kemudahan konfigurasi berbasis UI.
Migrasi identity provider itu seperti pindah rumah: kalian tidak memindahkan seluruh isi rumah dalam sekali angkut saat hujan deras. Kalian pindahkan barang per kamar, pastikan setiap ruangan berfungsi, dan menyimpan kotak-kotak penting di tempat yang mudah dijangkau jika harus kembali. Episode ini akan menyusun strategi pindah rumah itu — dari perencanaan hingga pembersihan rumah lama.
Kesalahan terbesar migrasi IdP adalah melakukannya sekaligus: matikan Keycloak, nyalakan Authentik, harap semua aplikasi berfungsi. Satu redirect URI yang salah bisa mematikan login seluruh organisasi tanpa jalan mundur. Sebaliknya, pilih cutover per aplikasi: kedua IdP hidup berdampingan, satu per satu aplikasi dialihkan, dan setiap pengalihan divalidasi sebelum lanjut.
Tiga pilar strategi ini:
Identitas adalah aset utama yang dipindahkan. Cara ekspor bergantung pada sumbernya:
Import ke Authentik bisa dilakukan lewat perintah ak import_users di dalam worker dengan file CSV yang berisi kolom seperti username, email, dan name:
docker compose exec worker ak import_users --filename /tmp/users.csvSebelum menjalankan, periksa dulu opsi dan format kolom yang didukung dengan docker compose exec worker ak import_users --help — setiap versi bisa memiliki perilaku sedikit berbeda, dan format yang salah membuat seluruh import ditolak.
Ada satu hal penting yang harus kalian pahami sejak awal: password hampir tidak pernah bisa dipindahkan antar IdP. Hash password dibuat dengan algoritma dan salt yang berbeda antar sistem — file user Authelia tidak bisa langsung menjadi password Authentik. Opsi yang realistis: lakukan migrasi dengan password kosong lalu wajibkan pengguna melakukan recovery/reset saat login pertama, atau alihkan autentikasi ke sumber eksternal seperti LDAP (di bawah) agar tidak perlu memindahkan hash sama sekali.
Grup dan keanggotaannya juga perlu dibangun ulang. Mapping peran dari IdP lama (misalnya role Keycloak menjadi grup Authentik) harus dilakukan dengan sadar, karena nantinya nama grup inilah yang dirujuk oleh policy dan property mapping.
Jika organisasi sudah memiliki Active Directory atau LDAP, kalian punya jalan pintas yang elegan: jangan ekspor user ke Authentik, tapi jadikan AD sebagai source of truth lewat LDAP source (episode 17). Authentik akan menyinkronkan user, grup, dan keanggotaan dari LDAP secara berkala — identitas tetap dikelola di AD, dan Authentik mengonsumsi hasilnya.
Pendekatan ini menghapus masalah password (authentikasi di-delegasikan ke LDAP bind) dan membuat ekspor/import yang berisiko tidak diperlukan. Yang perlu dipersiapkan: sinkronisasi grup yang benar, mapping atribut, dan keputusan apakah user dari LDAP boleh masuk ke flow Authentik tanpa autentikasi LDAP setiap kali.
Provider — OAuth2, SAML, proxy, LDAP — adalah objek yang memakan waktu jika dibuat manual satu per satu. Gunakan blueprint (episode 21) untuk mendefinisikannya sebagai kode yang bisa di-review dan diuji di staging dulu:
version: 1
entries:
- model: authentik_providers_oauth2.oauth2provider
id: provider-grafana
attrs:
name: Grafana
client_type: confidential
authorization_flow: !Find [authentik_flows.flow, [slug, default-provider-authorization-flow]]
redirect_uris:
- https://grafana.example.com/login/generic_oauthBuat blueprint untuk IdP lama dan IdP baru dengan konfigurasi yang setara, lalu validasi di environment staging sebelum menyentuh produksi. Ini juga memberi kalian dokumentasi migrasi yang bisa diulang.
Environment staging adalah tempat semua risiko dibayar murah: buat instance Authentik terpisah, terapkan blueprint yang sama, dan jalankan seluruh skenario login yang dipakai produksi — login internal, login via LDAP, forward auth, dan provider OIDC/SAML utama. Salah satu verifikasi yang sangat disarankan adalah memastikan endpoint discovery provider baru menjawab dengan benar, karena aplikasi akan mengandalkannya saat cutover:
curl -fsS https://auth.example.com/application/o/grafana/.well-known/openid-configurationDi staging juga kalian menguji hal yang tidak nyaman: rollback. Matikan staging Authentik, kembalikan konfigurasi aplikasi ke IdP lama, dan buktikan aplikasi kembali login tanpa cacat. Rollback yang pernah diuji adalah jaring pengaman yang membuat cutover di produksi terasa biasa saja.
Saat satu aplikasi siap dialihkan, prosedurnya berulang dan bisa diprediksi:
Di mana memungkinkan, jaga redirect URI tetap identik antara IdP lama dan baru. URI yang sama berarti perubahan yang harus dilakukan aplikasi semakin kecil, dan rollback semakin sederhana.
Cutover resmi bukanlah momen tunggal, melainkan titik terakhir dari deretan pengalihan per aplikasi. Selama periode ini, pantau tiga hal: volume login sukses per aplikasi, jumlah login gagal, dan alerting dari episode 25. Angka login sukses yang turun tajam setelah pengalihan adalah alarm pertama.
Rollback plan minimal: untuk setiap aplikasi, dokumentasikan langkah mengembalikan konfigurasi IdP ke nilai lama. Karena kedua IdP masih hidup selama masa transisi, rollback cukup dengan mengubah konfigurasi aplikasi kembali — tanpa menghidupkan ulang sesuatu yang sudah dimatikan. Baru setelah beberapa siklus pengamatan (misalnya 2-4 minggu) dengan metrik bersih, IdP lama bisa dimatikan.
Beberapa kegagalan yang paling sering ditemui saat migrasi:
Pada episode 29 ini kalian telah belajar bahwa migrasi IdP adalah proyek bertahap, bukan peristiwa sekali jalan: memilih strategi parallel running dan app-by-app swap, mengekspor user dan grup dari Keycloak, Authelia, atau Dex dengan memahami batasannya (termasuk password yang tidak bisa dipindahkan), memanfaatkan sinkronisasi LDAP/AD agar ekspor tak diperlukan, membangun ulang provider lewat blueprint, melakukan pengalihan per aplikasi dengan validasi, merancang cutover dan rollback, serta menghindari jebakan seperti redirect URI, sesi lama, dan perangkat MFA.
Inti yang harus kalian bawa:
Perjalanan panjang 29 episode bermuara pada satu pertanyaan terakhir: apakah sistem kalian siap produksi? Di episode 30 — episode final series ini — kita akan menutup dengan Production Checklist & Best Practices: checklist lengkap sebelum produksi, praktik operasional terbaik, jebakan umum, rekap seluruh perjalanan dari episode 0, masa depan Authentik, dan penutup untuk seluruh 31 episode. Sampai jumpa di episode 30!