Le Application Passwords sono credenziali da 24 caratteri introdotte in WordPress 5.6 (dicembre 2020) che permettono ad applicazioni esterne di autenticarsi sulla REST API e XML RPC di WordPress senza esporre la password principale dell'utente. Ogni Application Password è legata a un solo utente e a una sola applicazione nominata, può essere revocata individualmente dal profilo utente e viene inviata via HTTPS con HTTP Basic Authentication. Sostituiscono il vecchio pattern non sicuro di salvare la password principale di WordPress dentro app di terze parti e sono oggi il modo raccomandato per integrare WordPress con app mobile, script di deploy, frontend headless, strumenti di backup e agenti IA.
Perché WordPress ha introdotto le Application Passwords?
Prima di WordPress 5.6 ogni integrazione REST API o XML RPC con accesso in scrittura doveva usare la password principale dell'account (Basic Auth) o affidarsi a plugin come JWT Auth o OAuth. La password principale dava controllo totale compreso l'editor di temi e plugin, e una fuga significava il takeover totale dell'account. Le Application Passwords risolvono il problema con credenziali per app revocabili istantaneamente.
Come funzionano le Application Passwords?
Un utente loggato apre Utenti » Profilo, scorre alla sezione "Application Passwords", inserisce un nome come "App iPhone" o "Script di backup" e clicca Aggiungi nuova Application Password. WordPress genera un token di 24 caratteri mostrato una sola volta nel formato xxxx xxxx xxxx xxxx xxxx xxxx. Il token viene salvato come hash in wp_usermeta sotto la chiave _application_passwords e usato col nome utente in HTTP Basic Auth:
curl -u utente:xxxxxxxxxxxxxxxxxxxxxxxx \
https://example.com/wp-json/wp/v2/postsOppure via JavaScript fetch:
const token = btoa('utente:xxxxxxxxxxxxxxxxxxxxxxxx');
fetch('https://example.com/wp-json/wp/v2/posts', {
headers: { 'Authorization': 'Basic ' + token }
});Casi d'uso tipici
- App mobile come la app ufficiale WordPress iOS e Android.
- Frontend headless Next.js, Astro, SvelteKit, Nuxt.
- Script CI/CD che pubblicano post, aggiornano menu, fanno purge della cache.
- Strumenti di backup e migrazione come UpdraftPlus Remote, ManageWP, MainWP.
- Workflow di contenuti con IA via Zapier, Make, n8n o agente GPT.
- Sincronizzazione magazzino WooCommerce da ERP o PIM.
Creare una Application Password passo passo
- Accedi come utente per cui agirà l'integrazione. Crea un utente dedicato col ruolo minimo.
- Vai a
Utenti » ProfilooUtenti » Tutti » Modifica. - Scorri fino a Application Passwords.
- Dai un nome parlante, es.
Zapier ProduzioneoServer backup eu01. - Clicca Aggiungi nuova Application Password.
- Copia subito il token di 24 caratteri.
- Incollalo nell'app esterna con lo username WordPress.
Revocare e auditare le Application Passwords
Ogni Application Password mostra data di creazione e ultimo uso. Revoca invalida un singolo token, Revoca tutte le invalida tutte. Effetto immediato. Una revisione trimestrale dell'"Ultimo uso" rivela integrazioni dimenticate.
Sono sicure le Application Passwords?
Sì, su HTTPS. Circa 144 bit di entropia, hash phpass, solo nell'header Authorization. Rischi:
- HTTPS obbligatorio. WordPress le rifiuta su HTTP semplice di default.
- Nessuno scope né scadenza. Il token eredita i permessi dell'utente.
- Disattivate da alcuni plugin di hardening (iThemes/Solid Security).
Differenza con OAuth, JWT o API Keys
| Metodo | Integrato in WordPress | Revocabile per app | Scope | Scadenza |
|---|---|---|---|---|
| Password principale (Basic Auth) | Sì | No | Totale | No |
| Application Password | Sì (5.6+) | Sì | Eredita ruolo | No |
| JWT Auth (plugin) | No | Solo scadenza | Eredita ruolo | Sì |
| OAuth 2.0 (plugin) | No | Sì | Sì | Sì (refresh) |
| WooCommerce REST API Keys | WooCommerce | Sì | Lettura/Scrittura | No |
Disattivare completamente le Application Passwords
add_filter( 'wp_is_application_passwords_available', '__return_false' );O per utente:
add_filter( 'wp_is_application_passwords_available_for_user', function ( $available, $user ) {
if ( user_can( $user, 'manage_options' ) ) {
return false;
}
return $available;
}, 10, 2 );Cosa controlla InspectWP
InspectWP riporta la disponibilità della REST API di WordPress e segnala l'endpoint /wp-json/wp/v2/users se espone dati utenti senza autenticazione.