Cum se configurează și se utilizează autentificarea OAuth utilizând API-ul WP REST

Publicat: 2016-11-30
configurați wordpress rest api
Urmăriți @Cloudways

Când vine vorba de WordPress REST API, OAuth este cel mai comun furnizor de gestionare a autentificării.

Când este autentificată OAuth, utilizatorii se autentifică mai întâi prin formularul de autentificare WordPress care este utilizat pe site. cu toate acestea, această autentificare autorizează și clienții să gestioneze solicitările în numele lor și toate cererile ulterioare sunt validate prin jetoane OAuth. Aceste jetoane sunt, de asemenea, utilizate pentru a gestiona toate cererile de acces API. Acest acces ar putea fi revocat în orice moment.

Poate că cea mai importantă utilizare a procesului de autentificare OAuth este procesul sigur de gestionare a cererilor API REST fără a expune acreditările utilizatorilor. Acest lucru este deosebit de important în cazul serverelor de producție în care acreditările sunt adesea schimbate. În astfel de scenarii, autentificarea OAuth este utilizată pentru a oferi o procedură sigură pentru gestionarea solicitărilor frecvente de autentificare.

  • Autentificare tradițională versus OAuth
  • Flux de lucru de autentificare OAuth
  • Instalarea autentificării OAuth
  • Evaluarea disponibilității API-ului OAuth
  • Crearea și gestionarea aplicațiilor
  • CLI client pentru a genera acreditări OAuth
  • Client HTTP pentru a genera acreditări OAuth
  • Obținerea acreditării temporare
  • Autorizare utilizator
  • Schimb de jetoane
  • Trimiterea unei cereri autentificate de test

Autentificare tradițională versus OAuth

Pentru a înțelege semnificația autentificării OAuth, este important să înțelegeți modelul de autentificare tradițional și OAuth.

În modelul tradițional de autentificare, există două entități cheie; Client și furnizor de resurse / servicii. Clientul ar putea fi o aplicație web, un serviciu sau un utilizator, în timp ce furnizorul de resurse / servicii are resursele sau serviciile dorite într-un mediu cu acces restricționat.

Când Clientul are nevoie de o anumită resursă, acesta se autentifică la furnizorul de resurse, oferind acreditări adecvate. Deși acesta este un proces simplu, există, de asemenea, un risc imens de încălcare a securității.

În schimb, modelul de autentificare OAuth este puțin mai complex cu trei entități; Client care acționează în numele utilizatorului, utilizator care necesită acces la o resursă și serverul care întreține resursa.

Deoarece există trei entități, procesul este cunoscut sub numele de autentificare cu trei picioare. Cu toate acestea, în cazurile în care Clientul și Utilizatorul sunt aceleași entități, procesul de autentificare devine autentificare cu două picioare.

Flux de lucru de autentificare OAuth

Fluxul de lucru

  • Clientul solicită autorizarea utilizatorului pentru a accesa serverul .
  • Dacă Utilizatorul acceptă cererea, Clientul primește dreptul de a continua mai departe.
  • Clientul își prezintă identitatea și mandatul de la Client către Serverul de autorizare (API) și solicită un jeton.
  • În cazul validării cu succes a identității și a mandatului, Serverul de autorizare (API) emite un jeton de acces către Client . În acest moment, autentificarea este completă.
  • Apoi, Clientul se apropie de Server pentru a solicita o anumită resursă. În acest moment, Clientul trimite, de asemenea, jetonul de acces către
  • Dacă jetonul de acces este validat, Serverul acordă acces la resursa solicitată.

Clientul inițiază cererea semnată pentru un jeton de cerere. Această cerere este, de asemenea, cunoscută sub numele de acreditări temporare. Solicitarea este trimisă la URI-ul relevant al punctului final. Această cerere cuprinde câțiva parametri importanți:

  • oauth_consumer_key : Această cheie identifică aplicația care a generat solicitarea.
  • oauth_timestamp : Serverele folosesc acest timestamp pentru optimizarea stocării nonces.
  • oauth_nonce : Aceasta este singura aplicație generată token pentru fiecare solicitare individuală.
  • oauth_signature : Această parte importantă a cererii API este hash-ul tuturor componentelor cererii și a unor valori OAuth.
  • oauth_signature_method : Pluginul OAuth oferă o singură metodă de semnătură: HMAC-SHA1.
  • oath_callback : adresa URL către care utilizatorul este redirecționat după autorizare. Solicitarea este verificată și se emite un jeton de solicitare cu următorii parametri.
  • oauth_token : Acesta este simbolul aplicației care este eliminat din răspunsul serverului de autorizare. Acest simbol este apoi trimis la serverul API.
  • oauth_token_secret : Aceasta este similară cu parola utilizatorului. Solicitarea este apoi autorizată de către Client. Pentru aceasta, se creează un URI de solicitare și se adaugă oauth_token la URI-ul punctului final de autorizare a serverului. Utilizatorul autorizează trimiterea acestei solicitări furnizând acreditări corespunzătoare.

În cazul în care oauth_callback URI este disponibil în primul pas, serverul redirecționează către URI cu următorii parametri adăugați la șirul de interogare:

  • oauth_token : au deja simbolul.
  • oauth_verifier : verifică identitatea proprietarului resursei către client.

Dacă nu a fost furnizat URI-ul oauth_callback în primul pas, atunci serverul trimite valoarea oauth_verifier, astfel încât proprietarul resursei să poată informa clientul manual.

După ce primește oauth_verfier , clientul solicită serverului acreditări de token. Aceasta ia forma unei cereri către URI-ul final al Token Request. Această solicitare conține următorii parametri:

  • oauth_token
  • oauth_verfier
  • oauth_consumer_key
  • oauth_signature
  • oauth_signature_method
  • oauth_nonce
  • oauth_version

Instalarea autentificării OAuth

În contextul WordPress, autentificarea OAuth este implementată prin instalarea API-ului de autentificare OAuth pentru WordPress. Aceasta se bazează pe specificațiile OAuth 1.0a și extinde de fapt aceste specificații cu un parametru suplimentar wp_scope. Acest parametru este trimis la punctul final de solicitare de acreditare temporară .

Pluginul este disponibil pe Github de la echipa WP REST API. În prezent, versiunea 4.4 și versiunile ulterioare sunt acceptate.

Voi începe procesul de clonare a pluginului mutând în directorul / wp-content / plugins / :

 git clone https://github.com/WP-API/OAuth1.git 

Instalare Git

După finalizarea descărcării, activați pluginul prin WordPress CLI:

 wp plugin activează OAuth1

Dacă nu doriți să utilizați WordPress CLI, puteți accesa WordPress Admin >> Plugins și puteți activa pluginul din meniu. Alternativ, îl puteți activa și navigând în browser în secțiunea de pluginuri de administrare WordPress dacă nu doriți să utilizați WP CLI.

Evaluarea disponibilității API-ului OAuth

Înainte de a iniția strângerea de mână OAuth, voi verifica mai întâi dacă API-ul este activat pe server. Acest lucru se face prin trimiterea unei cereri GET simple către / wp-json / endpoint și apoi analizând răspunsul trimis de server.

 OBȚINEȚI http: // Server-Dev / wp-json /

Aceasta va returna un răspuns JSON după cum urmează:

cu autentificare

Accentul meu aici este valoarea oauth1 din valoarea proprietății de autentificare . Acest obiect are următoarele proprietăți definite:

  • cerere : punctul final al solicitării acreditării temporare
  • autorizați : punctul final de autorizare a proprietarului de resurse
  • acces : punctul final Token Request
  • versiune : se folosește versiunea OAuth

Dacă API-ul OAuth nu este activat pentru un site, răspunsul serverului va conține o valoare de proprietate de autorizare goală.

fără autentificare

Crearea și gestionarea aplicațiilor

Primul pas este să vă asigurați că pluginul OAuth1.0 este instalat și activat corect.

În continuare, pot crea și gestiona aplicații accesând WordPress Admin >> Utilizatori >> Aplicații.

utilizați formularul de cerere

Pe această pagină Aplicații înregistrate , voi înregistra o nouă aplicație făcând clic pe butonul Adăugare nouă și apoi completând următoarele trei câmpuri:

  1. Nume client: numele clientului care apare în secțiunea Aplicații autorizate și în timpul procesului de autorizare.
  2. Descriere : descrierea opțională a clientului.
  3. Adresă URL de apel invers: adresa URL de apel invers este utilizată atunci când se generează acreditări temporare.

Odată create făcând clic pe butonul Salvare client , cheia clientului și parametrii Secret client vor apărea în partea de jos a paginii pentru acest client.

acreditare de jurământ

Acum voi clona depozitul pe client executând următoarea comandă:

 git clone https://github.com/WP-API/client-cli 

CLI client

Acum navigați în directorul clonat și instalați dependențele pachetului utilizând Composer:

 cd client-cli
instalarea compozitorului

Dacă totul merge bine, linia de comandă ar trebui să arate ceva similar cu următorul:

instalarea compozitorului

CLI client pentru a genera acreditări OAuth

Pentru a începe procesul de autorizare OAuth, voi obține mai întâi următorii parametri de pe server:

  • oauth_consumer_key
  • oauth_consumer_secret

Acest lucru va fi generat prin terminal și executând următoarea comandă WordPress CLI:

 wp oauth1 adăugați

Cheia și secretul sunt oauth_consumer_key și, respectiv, oauth_consumer_secret .

Acum trebuie să conectez clientul la site-ul WordPress. Pe client, navigați la directorul client-cli (clonat anterior) și rulați următoarea comandă:

 wp --require = client.php api oauth1 connect http: // Server-Dev / --key = <cheia ta aici> --secret = <secretul tău aici>

Înlocuiți adresa URL, cheia și secretul din comanda de mai sus. Rezultatul ar trebui să fie după cum urmează:

 wp --require = client.php api oauth1 connect http: // your-server / wordpress-api / --key = <cheia ta> --secret = <codul tău secret>
Deschideți în browser-ul dvs.: http: // serverul dvs. / wordpress-api / oauth1 / autorizați? Oauth_token = <jetonul dvs.>
Introduceți codul de verificare:

Navigați la adresa URL dată de server și autentificați-vă făcând clic pe butonul Autorizare :

conectați WP REST API

Vi se va prezenta jetonul de verificare (sau oauth_verifier) ​​pe următorul ecran:

Authroze Token

Copiați verificatorul și lipiți-l în terminal. Vi se va da o cheie și un secret , care sunt în esență oauth_token și, respectiv, oauth_token_secret :

Client HTTP pentru a genera acreditări OAuth

Deoarece pluginul server OAuth 1.0a urmează fluxul standard cu trei picioare, generarea acreditării OAuth implică următorii pași:

  • Achiziționarea acreditării temporare
  • Autorizațiile utilizatorului
  • Schimb de jetoane

Obținerea acreditării temporare

Voi trimite o solicitare POST către / oauth1 / request endpoint pentru a obține acreditări temporare. Rețineți că acest punct final ar trebui să poată fi descoperit automat, deoarece un server ar putea înlocui singur ruta.

Solicitarea POST ar trebui să includă și parametrii oauth_consumer_secret cum au fost dobândiți la înregistrarea unui consumator pentru aplicație. Cererea ar putea include, de asemenea, parametrul oauth_callback și această adresă URL de apel invers trebuie să corespundă schemei, gazdei, portului și calea adresei URL de apel invers care a fost furnizată la înregistrarea aplicației.

În plus față de parametrii oauth_consumer_key și oauth_consumer_secret, cererea ar trebui să includă , de asemenea , parametrii oauth_signature și oauth_signature_method.

Când utilizați Postman, oauth_signature este generată automat. Trebuie doar să menționez parametrul oauth_signature_method . În acest moment, numai metoda de semnătură HMAC-SHA1 este acceptată de pluginul server OAuth.

Acum voi configura Postman să trimită o cerere POST către punctul final al acreditării simbolului temporar. Apoi, în fila Autorizare , selectați opțiunea OAuth 1.0 din meniul derulant. Completați câmpurile Cheie consumator și Secret consumator cu valorile furnizate de consumator. În cele din urmă, verificați dacă opțiunea Signature Method este setată la HMAC-SHA1 .

Autorizare utilizator

Pentru pasul de autorizare a utilizatorului, voi deschide punctul final de autorizare a proprietarului resurselor în browser și voi transmite oauth_token și oauth_token_secret obținut în pasul anterior ca parametri de interogare:

 http: // server-dev / oauth1 / authorize? oauth_token = <token_here> & oauth_token_secret = <secret_here> 

Autorizați conexiunea

Autorizați aplicația făcând clic pe butonul Autorizați . Următorul ecran va prezenta un indicativ de verificare. Acest simbol va acționa acum ca un simbol oauth_verifier în pasul următor.

Odată ce utilizatorul a autorizat clientul, aplicația va apărea sub secțiunea Aplicații autorizate din pagina Utilizatori> Profilul dvs.

Schimb de jetoane

Utilizând din nou opțiunea OAuth 1.0 în fila Autorizare , completați câmpurile pentru Cheia consumatorului și Secretul consumatorului cu valorile furnizate de consumator. În câmpurile de Indicativul și Indicativul Secret, introduceți oauth_token valoare și parametrii oauth_token_secret (acreditări temporare).

Deoarece pot trece și parametri în URL ca parametri de interogare, adăugați parametrul oauth_verifier la adresa URL după cum urmează:

 http: // server-dev / oauth1 / access? oauth_verifier = <oauth_verifier_value>

Cu toți parametrii la locul lor, trimiteți solicitarea făcând clic pe butonul Trimiteți . Dacă totul merge bine, serverul va returna un cod de stare 200 - OK împreună cu corpul de răspuns care conține parametrii oauth_token și o auth_token_secret .

 oauth_token = <oauth_token_value> & oauth_token_secret = <oauth_secret_value>

În acest moment, jetoanele temporare achiziționate anterior sunt aruncate și nu mai pot fi utilizate.

Noile oauth_token și oauth_token_secret parametrii sunt acreditările OAuth pe care le puteți utiliza în client pentru generarea de cereri autentificate.

Trimiterea unei cereri autentificate de test

Acum, că am acreditările token, voi trimite o cerere de testare către server folosind Postman. Solicitarea va necesita următorii parametri:

Înainte de a începe, va trebui să aveți următoarele:

  • oauth_consumer_key
  • oauth_consumer_secret
  • oauth_token
  • oauth_token_secret

Selectați OAuth 1.0 din meniul derulant de sub fila Autorizare din Postman.

Autorizare

După ce ați completat toate câmpurile, faceți clic pe butonul Actualizare cerere . Bifați opțiunea Adăugare parametri la antet pentru a trimite parametrii din antetul cererii în loc să adăugați la șirul de interogare.

Dacă solicitarea are succes, serverul va trimite un cod de stare 200 - OK .

Încheiem!

În acest tutorial, am discutat despre cum să configurați API-ul de autentificare OAuth pentru WordPress pe un server și cum să utilizați clientul HTTP pentru a obține acreditări de token. Dacă descoperiți o problemă în cod sau doriți să adăugați la discuție, vă rugăm să lăsați un comentariu mai jos.