2026年11月12日

2026年11月12日

Password per le applicazioni di WordPress: creare, revocare, REST API

Questo articolo è un'edizione localizzata dell'originale giapponese. Leggi l'originale in giapponese

Le password per le applicazioni (Application Passwords), introdotte con WordPress 5.6, sono password dedicate da dare alla REST API e agli strumenti esterni. Non devi comunicare la vera password di accesso, puoi crearne una per ogni strumento e revocare solo quelle che non servono più. In questo articolo vediamo i requisiti, come creare e revocare le password (dall'amministrazione, con WP-CLI e con PHP), come usarle con la REST API e cosa controllare quando qualcosa non funziona. Il contenuto è stato verificato sulla documentazione per sviluppatori e sul codice sorgente di WordPress a novembre 2026.

Cosa si può e cosa non si può fare con le password per le applicazioni

  • Si usano per l'autenticazione della REST API e di XML-RPC. Nella REST API si inviano nome utente e password per le applicazioni con l'autenticazione Basic.
  • Non si possono usare per il login all'amministrazione (wp-login.php). Non servono a far accedere le persone, ma a programmi e strumenti.
  • I privilegi sono gli stessi dell'utente che le ha create. Se le crea un amministratore, lo strumento che possiede quella password può fare le stesse operazioni di un amministratore. Se vuoi affidare solo la pubblicazione di articoli, crea un utente autore o editor e creala con quell'utente.
  • Si possono revocare una alla volta. Vengono registrati anche data e ora dell'ultimo utilizzo e l'indirizzo IP.

Requisiti

Per impostazione predefinita le password per le applicazioni si possono usare solo su siti HTTPS o su siti il cui tipo di ambiente è local. Il controllo di WordPress è il seguente (wp_is_application_passwords_supported()).

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

Nei siti rimasti in HTTP la voce non compare nella schermata del profilo. Il motivo è che la password verrebbe inviata su una comunicazione non cifrata.

Creala dall’amministrazione

  1. Apri «Utenti → Profilo» (Users → Profile). Per quelle di altri utenti, modifica l'utente interessato da «Utenti → Tutti gli utenti» (Users → All Users).
  2. Nella sezione «Password per le applicazioni» in basso, in «Nome della nuova password per le applicazioni» inserisci un nome che faccia capire l'uso (esempio: script di pubblicazione, Zapier).
  3. Premi «Aggiungi nuova password per le applicazioni» (a seconda della versione la dicitura può essere diversa).
  4. Annota la password di 24 caratteri mostrata. Una volta lasciata questa schermata non verrà mai più mostrata.

La password viene mostrata con uno spazio ogni 4 caratteri, come abcd EFGH 1234 ijkl MNOP 6789, ma l'autenticazione funziona con o senza spazi.

Per revocarla, nell'elenco della stessa sezione premi il pulsante di revoca sulla riga interessata. Puoi anche revocarle tutte insieme con «Revoca tutte le password per le applicazioni».

Creala, controllala ed eliminala con WP-CLI

# Crea la password (con --porcelain viene mostrata solo la password)
wp user application-password create admin "Script di pubblicazione" --porcelain

# Mostra l'elenco (l'uuid serve per eliminare)
wp user application-password list admin --fields=uuid,name,created,last_used,last_ip

# Elimina una password
wp user application-password delete admin 6633824d-c1d7-4f79-9dd5-4586f734d69e

# Elimina tutte le password di quell'utente
wp user application-password delete admin --all

Al posto di admin puoi indicare nome utente, indirizzo email o ID utente. Sostituisci l'uuid con il valore mostrato nel risultato di list.

Creala, controllala ed eliminala con PHP

Se la gestisci da un plugin o simili, usa la classe WP_Application_Passwords.

<?php
$user_id = 2; // ID dell'utente interessato

// Crea la password. In caso di successo restituisce un array [password in chiaro, informazioni salvate]
$result = WP_Application_Passwords::create_new_application_password(
	$user_id,
	array( 'name' => 'Script di pubblicazione' )
);

if ( is_wp_error( $result ) ) {
	error_log( $result->get_error_message() );
} else {
	list( $password, $item ) = $result;
	// $password è in chiaro. Si può ottenere solo ora, quindi consegnala all'utente in modo sicuro
	error_log( 'created: ' . $item['uuid'] );
}

// Ottieni l'elenco (name, uuid, created, last_used, last_ip e così via)
foreach ( WP_Application_Passwords::get_user_application_passwords( $user_id ) as $item ) {
	error_log( $item['name'] . ' ' . $item['uuid'] );
}

// Elimina una password
// WP_Application_Passwords::delete_application_password( $user_id, $uuid );

Viene salvato solo il valore sottoposto a hash e la password in chiaro si può ottenere solo nel momento in cui viene creata.

Usala con la REST API

Con curl aggiungi l'autenticazione Basic con -u nomeutente:password-per-le-applicazioni. Come prima cosa verifica che vengano restituite le informazioni sul tuo utente autenticato.

# Verifica che l'autenticazione funzioni (se vengono restituite le tue informazioni utente, ha funzionato)
curl -u "admin:abcd EFGH 1234 ijkl MNOP 6789" https://example.com/wp-json/wp/v2/users/me

# Crea un articolo in bozza
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":"Articolo di prova","content":"Testo","status":"draft"}'

Se chiami la REST API di un altro sito WordPress da PHP, costruisci tu l'header Authorization.

<?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 ) );
}

La password dell'esempio è solo dimostrativa. Quella reale non scriverla direttamente nel codice: mettila in un posto non pubblico, come una variabile d'ambiente o un file di configurazione.

Cosa controllare se l’autenticazione non funziona

Sintomo Cosa controllare
Nel profilo non c'è la sezione «Password per le applicazioni» Se il sito è in HTTPS. Se non è stata disattivata da un filtro o da un plugin
/wp/v2/users/me risponde 401 Se il nome utente è corretto (il nome di login, non il nome visualizzato). Se la password non è stata revocata
Anche se dovrebbe essere corretto, risulti non autenticato È possibile che il server non passi l'header Authorization a PHP. Con Apache controlla che sia rimasta la riga RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] nel .htaccess di WordPress
Falliscono solo alcuni URL Se un plugin di sicurezza o un WAF limita la REST API

Gli errori della REST API in generale sono spiegati in «Come risolvere gli errori della REST API».

Disattiva le password per le applicazioni

Nei siti in cui non le usi puoi disattivare l'intera funzione. Scrivilo nel functions.php del tema o in un tuo plugin.

<?php
// Disattiva per l'intero sito
add_filter( 'wp_is_application_passwords_available', '__return_false' );

Per consentirle solo ad alcuni utenti, usa il filtro per utente. L'esempio seguente le consente solo agli utenti con i privilegi di amministratore (manage_options).

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

Per il modo di limitare l'accesso alla REST API stessa, vedi «Come limitare l'accesso alla REST API».

Note operative

  • Crea una password diversa per ogni strumento e dai un nome che ne faccia capire l'uso. Se trapela, puoi revocare solo quella di quello strumento.
  • Revoca subito quelle degli strumenti che non usi più. Quelle con una data di ultimo utilizzo lontana nell'elenco potrebbero non essere usate.
  • Rivedi se serve davvero dare la password di un amministratore a un servizio esterno e creala con un utente che abbia solo i privilegi necessari.

Domande su WordPress? Chi pubblica questo sito ha sede in Giappone e risponde in giapponese. Contatti (in giapponese)

お気軽にご相談ください

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