Autentisering med WordPress REST API



Datasikkerhet

Autentisering med WordPress REST API

av Ole Petter den 10. mai 2020

Sist oppdatert: 11 mai, 2020 kl 15:11

WordPress sin REST API er en god måte å kommunisere med wordpress-innhold via mobile enheter, og den er brukt i WordPress sitt nye Gutenberg blokkredigeringsverktøy.

I dette eksempelet vises det hvordan man kan kommunisere med WordPress via REST API istedenfor gjennom det tradisjonelle dashbordet wp-admin.

Kilder:

JWT Authentication for WP REST API

https://firxworx.com/blog/wordpress/using-the-wordpress-rest-api-with-jwt-authentication/

Contents

Installer JWT

For å sende POST-requests til WordPress sin REST API må man ha tilgang til JWT, og nedenfor er et godt alternativ.

Konfigurer wp-config.php

Installer denne utvidelsen, og deretter kan du konfigurere wordpress sin «wp_config.php» fil i installasjonsmappen til å akseptere jwt autorisasjon.

For å sende POST-requests til wordpress sin REST API må du legge til disse linjene i wp-config.php:

define('JWT_AUTH_SECRET_KEY', 'din-super-sikre-kode-her');
define('JWT_AUTH_CORS_ENABLE', true);

Legg til http i .htaccess-filen

For at web serveren man bruker wordpress på skal akseptere HTTP Autorisering må denne være aktivert, og standard er at denne funksjonen er deaktivert. I samme mappe som wp-config.php ligger en fil kalt .htaccess. I denne filen legger man da til disse linjene:

RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]

Da skal .htaccess filen se slik ut etterpå:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
RewriteBase /ditt-nettsteds-url/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /ditt-nettsteds-url/index.php [L]
</IfModule>

Aktiver JWT-plugin

Når disse endringene er fullført, kan utvidelsen JWT for WordPress aktiveres.

Etter aktivering er det mulig å logge seg inn gjennom JWT og få et JSON Web Token i retur.

For å få et Token må man sende brukernavn og passord i en POST-request til wordpress sin JWT rute, altså /wp-json/jwt-auth/v1/token.

Eksempel:

https://progitek.no/wp-json/jwt-auth/v1/token

Innlogging og autentisering med JWT

For å logge inn må man opprette en POST-request til adressen /wp-json/jwt-auth/v1/token, hvor man sender med brukernavn og passord.

I dette eksempelet brukes Postman, som er et nyttig verktøy når man skal teste ut APIer og lignende. Her kan man legge til ulike HTTP-requests som GET, POST, PUT, PATCH og DELETE.

Postman
Sender en POST-request til /wp-json/jwt-auth/v1/token med brukernavn og passord tilhørende min wordpress-konto
I respons får jeg tilbake et token og informasjon om min brukerkonto, med statuskode 200

Redigere REST innhold med JWT

For å redigere innhold gjennom REST API må det legges ved koden eller Token man mottok i foregående eksempel.

Postman Bearer Token
Jeg legger ved tokenet i post request for å legge til et nytt innlegg. Typen er satt til «Bearer Token»

Deretter legger jeg til innholdet jeg vil legge til, altså «title» og «content».

Add post postman

Hvis jeg sjekker kontrollpanelet mitt og går inn på innlegg, kan jeg se at det er lagt til nye innlegg som utkast.

Posts
Innleggene som er sendt i Postman dukker opp som kladd i innleggsmappen.

Tips: For å legge til et nytt innlegg som automatisk vises i feeden med status som publisert, legg til enda et key-value felt i POST-requesten med Key: status, og value:

Postman post status

Les mer

Legg igjen en kommentar