Memahami bagaimana pengguna dan mesin mengidentifikasi diri ke OpenBao lewat auth method, membedakan tipe token service, batch, periodic, dan orphan, serta mengaktifkan userpass, SSO OIDC, dan AppRole untuk kebutuhan autentikasi yang berbeda.

Pada episode 7 kalian membuat policy yang menentukan hak akses. Namun policy tanpa identitas hanyalah aturan di atas kertas — dibutuhkan sesuatu yang membuktikan "siapa" kalian. Episode 8 ini membahas Authentication Methods: mekanisme bagi pengguna dan mesin untuk mengidentifikasi diri ke OpenBao dan memperoleh token yang membawa policy. Pilih auth method yang tepat, dan urusan login selesai dengan sendirinya.
Authentication method adalah pintu masuk ke OpenBao. Setiap auth method menghasilkan token yang membawa identitas dan policy. Enginenya diaktifkan dengan bao auth enable dan menempati path auth/<nama>.
Berikut perbandingan cepat auth method yang umum:
| Auth Method | Untuk siapa | Identitas | Perintah aktivasi |
|---|---|---|---|
token | Semua | Token | Sudah aktif secara default |
userpass | Manusia | Username + password | bao auth enable userpass |
approle | Mesin / service | RoleID + SecretID | bao auth enable approle |
oidc | Manusia (SSO) | Provider OIDC | bao auth enable oidc |
github | Developer | Token GitHub | bao auth enable github |
okta | Manusia | Akun Okta | bao auth enable okta |
azure | Mesin / manusia | Azure AD | bao auth enable azure |
Pada intinya, auth method mengubah kredensial eksternal menjadi token internal OpenBao. Setelah punya token, aturan selanjutnya ditentukan oleh policy dari episode 7.
Auth method token selalu ada dan tidak bisa dimatikan — bahkan login lewat auth method lain pun pada akhirnya mengeluarkan token. OpenBao memiliki empat tipe token dengan karakter yang berbeda:
| Tipe Token | Karakteristik | Kapan dipakai |
|---|---|---|
| Service | Default, bisa diperpanjang, punya parent | Hampir semua kasus |
| Batch | Ringan, tanpa lease metadata, tidak bisa diperpanjang | Request volume tinggi, klien stateless |
| Periodic | TTL diperbarui otomatis oleh token root, tidak pernah habis selama aktif | Daemon atau job berjalan panjang |
| Orphan | Tidak punya parent, tidak ikut tercabut saat parent di-revoke | Token lintas sesi yang harus hidup mandiri |
Token service bisa di-lookup, di-renew, dan di-revoke secara individual. Token batch sangat ringan sehingga cocok untuk beban tinggi, tetapi tidak membawa metadata lease dan tidak bisa diperbarui. Token periodic dipakai untuk proses yang berjalan terus-menerus, sementara orphan melindungi token dari efek samping pencabutan token induknya.
Contoh membuat berbagai tipe token:
bao token create -policy=my-policy
bao token create -type=batch -policy=my-policy
bao token create -type=periodic -period=24h -policy=my-policy
bao token create -orphan -policy=my-policyUntuk manusia, auth method paling sederhana adalah userpass — login dengan username dan password. Aktifkan lalu buat penggunanya:
bao auth enable userpass
bao write auth/userpass/users/budi \
password="sandiKuat123" \
token_policies="my-policy"bao auth enable userpass mengaktifkan engine di path auth/userpass. Setelah itu budi bisa login dengan bao login -method=userpass username=budi dan memasukkan password yang tadi dibuat — dan token yang didapat membawa policy my-policy.
Untuk skala tim yang lebih besar, autentikasi manual satu per satu tidak praktis. Di sinilah SSO masuk. OpenBao mendukung OIDC secara native, plus integrasi dengan penyedia populer:
Alurnya serupa untuk semua penyedia: aktifkan engine, konfigurasikan client_id, client_secret, dan redirect_uri, lalu petakan klaim identitas ke policy. Setelahnya, pengguna login lewat browser dan token dikeluarkan secara otomatis. Satu akun SSO bisa membawa beberapa policy sekaligus — misalnya mapping dari group Okta ke policy tertentu.
Untuk aplikasi dan microservice, tidak ada manusia yang terlibat — mesin yang harus login. Auth method approle adalah standar de facto untuk kebutuhan ini, menggunakan dua bagian kredensial:
Langkah penyiapannya:
bao auth enable approle
bao write auth/approle/role/my-app \
token_policies="my-policy" \
secret_id_ttl="1h" \
token_ttl="1h"
bao read auth/approle/role/my-app/role-id
bao write -f auth/approle/role/my-app/secret-idAplikasi menyimpan role_id dan secret_id, lalu melakukan login:
bao write auth/approle/login \
role_id="9c1f..." \
secret_id="d4a8..."Responsnya berupa token yang siap dipakai. Karena SecretID punya TTL, aplikasi yang baik login ulang secara berkala — konsep yang akan kembali kita pakai di episode 10 dan 11. Keunggulan AppRole: tidak ada password manusia, rotasi mudah, dan setiap aplikasi punya identitasnya sendiri yang bisa dicabut tanpa mengganggu aplikasi lain.
Important
Perlakukan secret_id seperti password: batasi TTL-nya, putar secara rutin, dan jangan pernah menuliskannya di kode atau repository. role_id boleh disimpan sebagai file konfigurasi, tetapi secret_id harus datang dari sumber rahasia — misalnya dari secret yang disimpan di OpenBao itu sendiri.
Pada episode 8 ini kalian memahami auth method sebagai pintu masuk identitas: tipe-tipe token dari service sampai orphan, autentikasi manusia lewat userpass dan SSO OIDC, serta autentikasi machine-to-machine memakai AppRole dengan RoleID dan SecretID.
Inti yang harus dibawa pulang:
Di episode 9 berikutnya, kita mengikuti jejak secret dinamis setelah ia lahir: Lease Management — apa itu Lease ID dan TTL, bagaimana memperpanjangnya, dan bagaimana mencabut akses seketika saat kebocoran terjadi.