Episode ini membahas otomatisasi Authentik: REST API di /api/v3, API token, blueprint sebagai konfigurasi deklaratif, serta penggunaan Python client dan Terraform provider untuk membuat user, flow, dan properti secara terprogram.

Sejauh ini semua dikerjakan lewat UI — Authentik memang UI-first. Namun saat jumlah pengguna bertambah atau kalian butuh reproduktibilitas, klik satu per satu di UI tidak akan berhasil. Episode 21 membuka pintu otomatisasi penuh: REST API, API token, blueprint, Python client, dan Terraform provider.
Analoginya seperti beda antara merakit server dengan tangan satu kali versus menulis playbook yang bisa dipakai ulang seratus kali. Yang terakhir itulah yang membuat lingkungan staging dan produksi identik.
Authentik menyediakan REST API lengkap yang juga dipakai oleh UI-nya sendiri. Kuncinya:
https://auth.example.com/api/v3/.core/users, core/groups, core/applications,
core/providers, flows/instances, policies, dan banyak lagi./api/v3/schema/swagger-ui/.API-nya besar; pada praktiknya kalian hanya menyentuh sebagian kecil. Mulai dari yang sering dipakai: user, grup, dan property mapping.
Autentikasi API memakai token:
Authorization sebagai Bearer.Simpan token seperti password: di secret manager (misalnya OpenBao atau Vault yang pernah kalian pelajari di series lain), bukan di kode atau repository.
Melihat daftar user:
curl -s https://auth.example.com/api/v3/core/users/ \
-H "Authorization: Bearer $TOKEN" \
-H "Accept: application/json" | jq .resultsMembuat user baru:
curl -s -X POST https://auth.example.com/api/v3/core/users/ \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"username": "arman", "name": "Arman Dwi Pangestu", "email": "arman@example.com", "is_active": true}'Perhatikan bagaimana request POST membawa Content-Type: application/json
dan body JSON — pola ini sama untuk semua pembuatan objek di Authentik.
Blueprint adalah file YAML yang mendeskripsikan objek Authentik — user, grup, flow, provider, property mapping, bahkan brand — dalam satu dokumen. Ini jembatan antara "klik di UI" dan "kode".
Dua status penting sebuah blueprint instance:
Aturan praktis: gunakan managed untuk hal yang harus seragam di semua lingkungan (misalnya provider standar), dan unlocked untuk objek yang memang perlu diedit manual.
version: 1
entries:
- model: authentik_core.user
identifiers:
username: arman
attrs:
name: Arman Dwi Pangestu
email: arman@example.com
is_active: true
- model: authentik_core.group
identifiers:
name: admins
attrs:
users:
- !find authentik_core.user
where:
- username: arman
- model: authentik_core.propertymapping
identifiers:
name: mapping-grup-ke-claim
attrs:
expression: |
return {
"groups": [group.name for group in user.ak_groups.all()],
}Perhatikan ekspresi !find: blueprint mencari objek yang sudah ada dan
mereferensikannya, sehingga grup admins merujuk ke user arman tanpa perlu
menebak UUID. Ini yang membuat blueprint idempoten — aman di-apply berulang.
Kombinasi API dan blueprint membuka pola otomasi yang umum:
Untuk logika yang lebih kompleks daripada curl, ada client Python yang
dibuat dari spesifikasi OpenAPI (tersedia sebagai authentik-client). Pola
penggunaannya konsisten: buat client, lalu panggil fungsi endpoint:
from authentik_client.client import AuthentikClient
from authentik_client.api.core import core_users_list
client = AuthentikClient(
base_url="https://auth.example.com",
token="token-api-kalian",
)
users = core_users_list.sync(client=client)
for user in users.results or []:
print(user.username)Struktur import mengikuti generator OpenAPI dan bisa berbeda antar versi SDK; selalu cek dokumentasi versi yang kalian pakai.
Untuk deployment yang sudah berbasis Terraform (atau OpenTofu), ada provider
goauthentik/authentik:
terraform {
required_providers {
authentik = {
source = "goauthentik/authentik"
version = "~> 2025.1"
}
}
}
provider "authentik" {
url = "https://auth.example.com"
token = var.authentik_token
}
resource "authentik_user" "arman" {
username = "arman"
name = "Arman Dwi Pangestu"
email = "arman@example.com"
is_active = true
}Dengan provider ini, objek identitas menjadi bagian dari state infrastruktur kalian: ter-versioning, ter-review lewat pull request, dan bisa di-revert.
Tip
Mulai otomatisasi dari satu hal yang paling sering kalian lakukan manual, misalnya pembuatan user. Setelah pola itu nyaman, perluas ke grup, property mapping, lalu flow. Otomatisasi sebaiknya bertumbuh, bukan dilakukan sekaligus.
Ringkasan episode 21:
/api/v3 mengekspos seluruh konfigurasi; autentikasi memakai API
token sebagai Bearer.Di episode 22, kita memakai semua aktivitas itu untuk kepentingan lain: events dan auditing untuk memeriksa, mengekspor, dan mengintegrasikan jejak autentikasi. Sampai jumpa!