2026年11月12日

2026年11月12日

Applicatiewachtwoorden in WordPress: aanmaken, verwijderen, REST API

Dit artikel is een gelokaliseerde versie van het Japanse origineel. Lees het Japanse origineel

Applicatiewachtwoorden zijn aparte wachtwoorden die in WordPress 5.6 zijn toegevoegd om aan de REST API en externe tools te geven. Je hoeft je echte inlogwachtwoord niet te delen, je maakt ze per tool aan en je kunt alleen de wachtwoorden intrekken die je niet meer nodig hebt. In dit artikel lees je de voorwaarden, hoe je ze aanmaakt en verwijdert (via het beheer, WP-CLI en PHP), hoe je ze gebruikt in de REST API en wat je controleert als het niet lukt. De inhoud is gecontroleerd aan de hand van de ontwikkelaarsdocumentatie en de broncode van WordPress, stand november 2026.

Wat applicatiewachtwoorden wel en niet kunnen

  • Je kunt ze gebruiken om te authenticeren bij de REST API en XML-RPC. Bij de REST API stuur je de gebruikersnaam en het applicatiewachtwoord met Basic-authenticatie.
  • Je kunt er niet mee inloggen op het beheer (wp-login.php). Ze zijn bedoeld voor programma's en tools en niet om als mens in te loggen.
  • De rechten zijn dezelfde als die van de gebruiker voor wie je ze hebt aangemaakt. Maakt een beheerder er een aan, dan kan een tool met dat wachtwoord hetzelfde als een beheerder. Wil je alleen berichten laten plaatsen, maak dan een gebruiker met de rol auteur of redacteur en maak het wachtwoord voor die gebruiker aan.
  • Je kunt ze een voor een intrekken. Ook de datum en het IP-adres van het laatste gebruik worden vastgelegd.

Voorwaarden voor gebruik

Standaard kun je applicatiewachtwoorden alleen gebruiken op sites met HTTPS of op sites waarvan het omgevingstype local is. WordPress bepaalt dat als volgt (wp_is_application_passwords_supported()).

return is_ssl() || 'local' === wp_get_environment_type();

Bij een site die nog op HTTP draait, verschijnt het onderdeel niet op het profielscherm. Het wachtwoord zou dan via een niet-versleutelde verbinding worden verstuurd.

Aanmaken in het beheer

  1. Open "Gebruikers" → "Profiel" (Users → Profile). Voor een andere gebruiker bewerk je die gebruiker via "Gebruikers" → "Alle gebruikers" (Users → All Users).
  2. Vul onderaan bij "Applicatiewachtwoorden" (Application Passwords) bij "Nieuwe applicatiewachtwoordnaam" een naam in waaraan je het doel herkent (bijvoorbeeld: script voor berichten, Zapier).
  3. Klik op "Nieuw applicatiewachtwoord toevoegen" (Add New Application Password; bij sommige versies staat er een iets andere tekst).
  4. Noteer het wachtwoord van 24 tekens dat wordt getoond. Zodra je dit scherm verlaat, wordt het nooit meer getoond.

Het wachtwoord wordt getoond met een spatie na elke vier tekens, zoals abcd EFGH 1234 ijkl MNOP 6789, maar de authenticatie werkt met of zonder spaties.

Om een wachtwoord in te trekken klik je in de lijst op dezelfde plek op de knop om in te trekken bij de betreffende regel. Met "Alle applicatiewachtwoorden intrekken" trek je ze ook allemaal tegelijk in.

Aanmaken, bekijken en verwijderen met WP-CLI

# Aanmaken (gebruik --porcelain om alleen het wachtwoord te tonen)
wp user application-password create admin "Script voor berichten" --porcelain

# Toon de lijst (de uuid gebruik je om te verwijderen)
wp user application-password list admin --fields=uuid,name,created,last_used,last_ip

# Eén verwijderen
wp user application-password delete admin 6633824d-c1d7-4f79-9dd5-4586f734d69e

# Alle wachtwoorden van die gebruiker verwijderen
wp user application-password delete admin --all

Bij admin kun je de gebruikersnaam, het e-mailadres of de gebruikers-ID opgeven. Vervang de uuid door de waarde die in het resultaat van list staat.

Aanmaken, bekijken en verwijderen met PHP

Gebruik je ze vanuit bijvoorbeeld een plugin, dan gebruik je de klasse WP_Application_Passwords.

<?php
$user_id = 2; // ID van de betreffende gebruiker

// Aanmaken. Bij succes krijg je een array [wachtwoord in leesbare tekst, opgeslagen gegevens] terug
$result = WP_Application_Passwords::create_new_application_password(
	$user_id,
	array( 'name' => 'Script voor berichten' )
);

if ( is_wp_error( $result ) ) {
	error_log( $result->get_error_message() );
} else {
	list( $password, $item ) = $result;
	// $password is leesbare tekst. Je krijgt het alleen nu, dus geef het op een veilige manier aan de gebruiker
	error_log( 'created: ' . $item['uuid'] );
}

// Haal de lijst op (name, uuid, created, last_used, last_ip enzovoort)
foreach ( WP_Application_Passwords::get_user_application_passwords( $user_id ) as $item ) {
	error_log( $item['name'] . ' ' . $item['uuid'] );
}

// Eén verwijderen
// WP_Application_Passwords::delete_application_password( $user_id, $uuid );

Alleen de gehashte waarde wordt opgeslagen; het wachtwoord in leesbare tekst kun je alleen op het moment van aanmaken opvragen.

Gebruiken met de REST API

In curl voeg je Basic-authenticatie toe met -u gebruikersnaam:applicatiewachtwoord. Controleer eerst of je als geauthenticeerde gebruiker je eigen gegevens terugkrijgt.

# Controleer of de authenticatie werkt (krijg je je eigen gebruikersgegevens terug, dan is het gelukt)
curl -u "admin:abcd EFGH 1234 ijkl MNOP 6789" https://example.com/wp-json/wp/v2/users/me

# Maak een bericht als concept
curl -u "admin:abcd EFGH 1234 ijkl MNOP 6789" \
  -X POST https://example.com/wp-json/wp/v2/posts \
  -H "Content-Type: application/json" \
  -d '{"title":"Testbericht","content":"Inhoud","status":"draft"}'

Roep je vanuit PHP de REST API van een andere WordPress-site aan, dan maak je de Authorization-header zelf.

<?php
$response = wp_remote_get(
	'https://example.com/wp-json/wp/v2/users/me',
	array(
		'headers' => array(
			'Authorization' => 'Basic ' . base64_encode( 'admin:abcd EFGH 1234 ijkl MNOP 6789' ),
		),
	)
);

if ( ! is_wp_error( $response ) ) {
	error_log( wp_remote_retrieve_response_code( $response ) );
}

Het wachtwoord in het voorbeeld is een voorbeeld. Zet een echt wachtwoord niet rechtstreeks in de code, maar op een plek die niet openbaar is, zoals een omgevingsvariabele of een configuratiebestand.

Wat je controleert als het authenticeren niet lukt

Symptoom Wat je controleert
Op het profiel staat het onderdeel "Applicatiewachtwoorden" niet Draait de site op HTTPS? Is het niet met een filter of een plugin uitgeschakeld?
/wp/v2/users/me geeft 401 Is de gebruikersnaam juist (de inlognaam, niet de weergavenaam)? Heb je het wachtwoord niet ingetrokken?
Je wordt als niet ingelogd behandeld terwijl het goed zou moeten zijn Mogelijk geeft de server de Authorization-header niet door aan PHP. Controleer bij Apache of de regel RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] in de .htaccess van WordPress nog aanwezig is
Alleen sommige URL's mislukken Beperkt een beveiligingsplugin of een WAF de REST API?

Algemene fouten in de REST API worden besproken in "Fouten in de REST API oplossen".

Applicatiewachtwoorden uitschakelen

Op sites waar je ze niet gebruikt, kun je de functie helemaal uitschakelen. Zet dit in de functions.php van het thema of in een eigen plugin.

<?php
// Voor de hele site uitschakelen
add_filter( 'wp_is_application_passwords_available', '__return_false' );

Wil je ze alleen voor bepaalde gebruikers toestaan, gebruik dan het filter per gebruiker. Het volgende voorbeeld staat het alleen toe voor gebruikers met beheerdersrechten (manage_options).

<?php
add_filter( 'wp_is_application_passwords_available_for_user', function ( $available, $user ) {
	return $available && user_can( $user, 'manage_options' );
}, 10, 2 );

Hoe je de toegang tot de REST API zelf beperkt, lees je in "De toegang tot de REST API beperken".

Aandachtspunten bij het beheer

  • Maak voor elke tool een apart wachtwoord aan en geef het een naam waaraan je het doel herkent. Lekt het, dan trek je alleen het wachtwoord van die tool in.
  • Trek wachtwoorden van tools die je niet meer gebruikt meteen in. Een oude datum van het laatste gebruik in de lijst kan betekenen dat het niet wordt gebruikt.
  • Ga na of je het wachtwoord van een beheerder wel aan een externe dienst moet geven en maak het aan voor een gebruiker die alleen de nodige rechten heeft.

Vragen over WordPress? De uitgever van deze site zit in Japan en antwoordt in het Japans. Contact (Japans)

お気軽にご相談ください

お見積りへ お問い合わせへ
▲