Configurare l'Autenticazione WordPress tramite API Esterna

31 mag 2017, 12:39:54
Visualizzazioni: 20.9K
Voti: 9

Esiste un sito non WordPress e ho bisogno che i loro utenti possano accedere al mio nuovo sito WordPress utilizzando le stesse credenziali che già possiedono.

Mi è stato fornito un endpoint (www.example-api.com/token) e le credenziali di accesso (email e password) che restituiscono un token (e altri dettagli) come risposta.

Ho letto riguardo OAuth e la maggior parte delle risorse che trovo riguardano problemi opposti (come accedere a un sito non WordPress utilizzando le credenziali del sito WordPress). Non ho accesso all'altro sito e vedo che richiede una configurazione lì, quindi devo escludere questa opzione?

Mi sono imbattuto nella possibilità di sovrascrivere wp_authenticate tramite un plugin personalizzato, che ho già configurato, ma sono bloccato su cosa e COME procedere effettivamente.

Qualche guida o suggerimento per questo?

2
Commenti

Attualmente non vedo assolutamente alcun modo fattibile senza una porta dal sito non-WP a questo effetto. Altrimenti: dove dovresti confermare che le credenziali inviate dagli utenti dal sito non-WP sul tuo sito siano veramente corrette e corrispondano a un determinato utente? Spero tu capisca!

nyedidikeke nyedidikeke
31 mag 2017 14:17:35

Penso di non essermi spiegato abbastanza chiaramente – avevo accesso a un endpoint e anche ad alcuni dati di test per l'indirizzo email e la password degli account di cui ho bisogno. Ce l'ho fatta comunque, lo posterò. Grazie per il tuo aiuto! :)

Suika Suika
5 giu 2017 12:58:54
Tutte le risposte alla domanda 1
9
12

Aggiornamento: Ho pubblicato un post sul blog per spiegarlo meglio :)


Sono riuscito a farlo utilizzando il filtro authenticate di WP all'interno di un nuovo plugin; gran parte del lavoro è stato guidato da questo tutorial di Ben Lobaugh. I punti principali del plugin:

  • Creare una funzione per le chiamate API utilizzando cURL (puoi ottenere i codici guida da Postman durante il test se non li conosci già).
  • Aggiungere un filtro che verifichi se la risposta della chiamata indica che l'utente esiste e ha accesso (nel mio caso, basato sul ruolo dell'utente).
  • Sempre utilizzando il filtro, verificare se l'utente ha già un account sul sito WP – in caso contrario, crearne uno per loro utilizzando wp_insert_user. Per chiarezza, ho utilizzato l'email e la password verificate dall'API perché WP richiede un utente registrato nel suo database.
  • Se l'utente esiste già nel database WP, assicurarsi che le credenziali siano le stesse utilizzando wp_update_user. Questo è utile per casi come quando cambiano i loro dettagli sul sito principale non-WP.
  • Opzionalmente, aggiungere una pagina delle impostazioni per il plugin. Nel mio caso, ho creato un campo per l'URL della richiesta seguendo questo tutorial di Bharat Pareek.
6 giu 2017 05:32:41
Commenti

quindi hai implementato una sorta di SSO che è davvero l'unico modo per procedere. Ma la parte "se l'utente non esiste crea un account" suona molto sbagliato. Qualsiasi attacco brute force su larga scala potrebbe mettere in difficoltà il tuo WordPress

Mark Kaplun Mark Kaplun
6 giu 2017 05:49:52

Puoi spiegarmelo meglio? Ero convinto di dover creare un utente locale su WordPress poiché la guida che ho seguito (primo link) diceva specificamente "WordPress richiede che un utente reale (utente WordPress) sia presente nel database di WordPress per poter eseguire operazioni su quell'utente".

Creo un nuovo utente solo se la risposta lo indica, registrandoli utilizzando anche la loro email e password dall'API.

Suika Suika
6 giu 2017 06:00:32

forse è solo qualcosa nella tua descrizione, o un mio fraintendimento, ma sembra che tu crei un utente per ogni richiesta di "verifica".

Mark Kaplun Mark Kaplun
6 giu 2017 07:43:09

Ah, credo di aver capito... autentichi gli utenti di WordPress sul sito esterno. In quel caso sì, la tua logica è corretta

Mark Kaplun Mark Kaplun
6 giu 2017 07:46:24

Capisco. Sì, probabilmente è la formulazione. Lo modificherò per renderlo più chiaro. Grazie!

Suika Suika
6 giu 2017 09:06:50

Il link del blog restituisce un errore 404

M.Babcock M.Babcock
25 gen 2019 00:59:11

Ho sistemato il link del blog! :)

Suika Suika
14 mar 2019 09:08:59

Grazie! Sto pensando di usare questo approccio. Come gestisci quando un utente cambia la password sull'applicazione non-WP? Usi semplicemente la WP REST API per aggiornarla?

Kevin Amorim Kevin Amorim
9 dic 2020 11:53:00

Esatto, è così che l'ho gestito dato che l'autenticazione sul sito non-WP è l'unico posto dove possono aggiornare la password comunque. Buona fortuna! :)

Suika Suika
10 dic 2020 16:08:25
Mostra i restanti 4 commenti