Wordpress Application Passwords REST Auth Basic Auth Tls
Definisi
Application Passwords adalah fitur WordPress (sejak 5.6) yang memungkinkan user membuat password khusus aplikasi untuk otentikasi ke REST API tanpa memakai password akun utama. Ini memakai HTTP Basic Auth di atas TLS, dan setiap request divalidasi lewat wp_authenticate_application_password.
Kapan dipakai
Pakai Application Passwords kalau kamu membangun integrasi pihak ketiga (mobile app, CLI, external service) yang butuh akses REST API atas nama user tertentu. Untuk server-to-server tanpa user, lebih baik pakai Application Password milik service account atau custom token via plugin.
Cara kerja
Membuat & pakai
- User generate App Password di profil admin.
- Request REST memakai header:
Authorization: Basic base64(user_login:app_password)- WordPress memvalidasi, lalu request jalan dengan capability user tersebut.
Cek di PHP
$user = wp_get_current_user();
if (!current_user_can('edit_posts')) {
wp_die('forbidden', 403);
}Nonce vs App Password
- Nonce: proteksi CSRF untuk request dari session browser (cookie).
- App Password: otentikasi stateless untuk client eksternal.
Keduanya beda tujuan; jangan campur asumsi.
Struktur alur
Contoh endpoint terlindungi
register_rest_route('myapp/v1', '/profile', [
'methods' => 'GET',
'permission_callback' => function () {
return current_user_can('read');
},
'callback' => function ($req) {
$u = wp_get_current_user();
return ['name' => $u->display_name];
},
]);Catatan implementasi
- Selalu butuh HTTPS; Basic Auth tanpa TLS berbahaya.
permission_callbackwajib di setiap route (sejak WP 5.5) — jangan biarkan null.- App Password terikat user, bukan per-aplikasi secara granular; revoke lewat UI profil.
Kesalahan umum
- Pakai di non-TLS: kredensial mudah bocor.
- Lupa permission_callback: endpoint terbuka untuk user tak berhak.
- Menyimpan App Password di client: sebaiknya minta user generate, jangan hardcode.
- Campur nonce dan app password: nonce butuh cookie session, tidak cocok untuk client eksternal.