Configurarea autentificării WordPress cu un API extern
Există un site non-WordPress existent și am nevoie ca utilizatorii lor să se poată autentifica pe noul meu site WordPress folosind aceleași credențiale pe care le au deja.
Mi s-a furnizat un endpoint (www.example-api.com/token) și date de autentificare (email și parolă) care returnează un token (și alte detalii) ca răspuns.
Am citit despre OAuth și majoritatea resurselor pe care le găsesc sunt pentru probleme în sens invers (cum ar fi autentificarea pe un site non-WordPress folosind credențialele de pe site-ul WordPress). Nu am acces la celălalt site și văd că necesită configurare acolo, așa că ar trebui să exclud această opțiune?
M-am lovit de suprascrierea funcției wp_authenticate prin intermediul unui plugin personalizat, pe care l-am configurat deja, dar sunt blocat în ceea ce privește CE și CUM să fac acest lucru.
Aveți vreun ghid sau sfat pentru această situație?

Actualizare: Am creat un articol pe blog pentru a explica acest lucru mai bine :)
Am reușit să fac asta folosind filtrul authenticate
din WordPress într-un nou plugin; majoritatea fiind ghidate de acest tutorial scris de Ben Lobaugh. Punctele principale ale pluginului:
- Crează o funcție pentru apelul API folosind cURL (poți obține coduri ghid de la Postman în timpul testării dacă nu știi deja).
- Adaugă un filtru care verifică dacă răspunsul de la apel indică faptul că utilizatorul există și are acces (în cazul meu, bazat pe rolul utilizatorului).
- Tot folosind filtrul, verifică dacă utilizatorul are deja un cont pe site-ul WordPress – dacă nu, creează-i unul folosind
wp_insert_user
. Pentru clarificare, am folosit email-ul și parola verificate de API deoarece WordPress necesită un utilizator înregistrat în baza sa de date. - Dacă utilizatorul există deja în baza de date WordPress, asigură-te că credentialele sunt aceleași folosind
wp_update_user
. Acestea sunt pentru cazuri precum când și-au schimbat detaliile pe site-ul principal non-WordPress. - Opțional, adaugă o pagină de setări pentru plugin. În cazul meu, am creat un câmp pentru URL-ul de cerere urmând acest tutorial scris de Bharat Pareek.

deci ai implementat un fel de SSO, care este într-adevăr singura modalitate de a aborda această situație. Dar partea cu "dacă utilizatorul nu există, creează un cont" sună foarte greșit. Orice atac brute force la o scară mai mare ar putea să-ți distrugă WordPress-ul

Poți să explici mai detaliat? Am avut impresia că trebuie să le creez un utilizator local WordPress, deoarece ghidul pe care l-am urmat (primul link) specifica clar: "WordPress necesită ca un utilizator real (utilizator WordPress) să fie prezent în baza de date WordPress pentru a putea efectua operațiuni pe acel utilizator."
Eu creez un nou utilizator doar dacă răspunsul indică acest lucru, iar înregistrarea se face folosind email-ul și parola lor din API.

poate este doar ceva în descrierea ta, sau o neînțelegere din partea mea, dar sună de parcă creezi un utilizator pentru fiecare cerere de "verificare".

Ah, cred că am înțeles... autentifici utilizatorii WordPress pe celălalt site. În acest caz, da, logica ta este corectă.

Înțeleg. Da, probabil este vorba de formulare. O să o editez pentru a o face mai clară. Mulțumesc!

Mulțumesc! Mă gândesc să folosesc această abordare. Cum te descurci când un utilizator își schimbă parola în aplicația non-WP? Pur și simplu folosești API-ul REST WP pentru a actualiza?
