Problema di autenticazione con REST API - rest_cannot_create

13 mag 2018, 21:08:09
Visualizzazioni: 27K
Voti: 5

Sto utilizzando le REST API in WordPress. Per l'autenticazione uso il plugin Basic Authentication (JSON Basic Authentication)

Utilizzo questa richiesta (sia da Postman che da Node.js):

POST /wp-json/wp/v2/posts HTTP/1.1
Host: **************
Authorization: Basic *********************
Content-Type: application/json
Cache-Control: no-cache

{ "title": "test", "content": "test", "status": "private", "excerpt": "test" }

Quando testo localmente sul mio server funziona correttamente, ma su un VPS ottengo il seguente errore:

{
    "code": "rest_cannot_create",
    "message": "Spiacenti, non hai i permessi per creare articoli come questo utente",
    "data": {
        "status": 401
    }
}

So che le credenziali utente sono corrette e l'utente ha i permessi per creare articoli.

Sospetto che l'header di autenticazione venga perso da qualche parte prima di arrivare alle REST API. Ma da dove dovrei iniziare il debug? Quali log controllare?

0
Tutte le risposte alla domanda 3
1

L'intestazione Authorization viene solitamente rimossa da Apache.

Puoi risolvere questo problema utilizzando il file .htaccess

RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
9 ago 2018 03:18:59
Commenti

Questo è stato difficile da trovare. Grazie!

Álvaro Franz Álvaro Franz
11 nov 2024 23:40:53
3

Se sei qui perché hai già provato di tutto e ancora non riesci a creare risorse tramite l'API REST di WordPress, lascia che condivida ciò che ha funzionato per me.

Prima di tutto, permettimi di darti un po' di contesto: ho avviato WordPress su un'istanza AWS utilizzando Bitnami.

Poi ho installato WooCommerce e abilitato la sua API per poterci lavorare come sistema sandbox. Subito dopo, ho provato a creare prodotti utilizzando Postman ma ogni volta ottenevo errori come "woocommerce_rest_cannot_create" ("Spiacenti, non sei autorizzato a creare risorse."). Ho provato diversi metodi di autenticazione come OAuth e Basic Auth ma nessuno di questi ha funzionato.

Così ho pensato che forse avrei dovuto provare l'endpoint API di WordPress invece (anziché quello di WooCommerce) e vedere se potevo creare post o utenti, ma anche quello non ha funzionato. Ho ricevuto errori come:

  • "rest_cannot_create" ("Spiacenti, non sei autorizzato a creare post con questo utente.")
  • "rest_cannot_create_user" ("Spiacenti, non sei autorizzato a creare nuovi utenti")

Ecco cosa ha funzionato per me:

  • Installa il plugin Basic Auth, puoi installarlo clonando il repository in /opt/bitnami/apps/wordpress/htdocs/wp-content/plugins e poi attivandolo dalla pagina dei plugin nell'area di amministrazione di WP. Oppure puoi anche scaricare il repository come zip e installarlo da file dalla pagina dei plugin in WP Admin.
  • Cambia Postman (o qualunque strumento tu stia usando per inviare le richieste) per utilizzare Basic Auth. Utilizza le credenziali di un utente Amministratore esistente.
  • Modifica il file .htaccess disponibile in /opt/bitnami/apps/wordpress/htdocs (Questo file è nascosto, non preoccuparti se non riesci a vederlo)
  • Aggiungi una nuova riga sotto RewriteEngine On e inserisci RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}], salva ed esci
  • Modifica /opt/bitnami/apps/wordpress/conf/httpd-app.conf aggiungendo una nuova riga dopo RewriteEngine On
  • Nella nuova riga inserisci: RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}], salva ed esci
  • Riavvia Apache: sudo /opt/bitnami/ctlscript.sh restart apache
  • (OPZIONALE) Installa Application Passwords di George Stephanis

Poi ho riprovato da Postman e tutto ha funzionato perfettamente.

Per maggiori dettagli controlla: https://community.bitnami.com/t/setting-up-api-access-to-wordpress-on-aws-ec2-instance/60589/7

6 ago 2019 05:18:05
Commenti

amico mi hai appena salvato due giorni

Codecraker Codecraker
23 giu 2020 23:16:27

Felice di sentirlo @Codecraker :-)

Antony Fuentes Antony Fuentes
25 giu 2020 00:11:37

Ho seguito tutti i passaggi sopra ma niente da fare :-(

Sohail Ahmed Sohail Ahmed
28 set 2020 14:13:49
0

Nel mio caso, ho scoperto che la soluzione era creare e utilizzare una Password Applicativa di WordPress, invece di usare la normale password di accesso. Una password regolare non funzionava tramite l'API.

Le Password Applicative sono state introdotte in WordPress 5.6, quindi potrebbero essere una novità per alcuni: https://make.wordpress.org/core/2020/11/05/application-passwords-integration-guide/

21 apr 2023 16:54:55