WordPress REST API Authentication plugin ger säkerheten från obehörig åtkomst till dina WordPress REST API:er.
Sökresultat :
×OAuth 2.0 är den mest valda metoden för att autentisera åtkomst till API:erna. OAuth 2.0 tillåter auktorisering utan att behöva tillhandahålla användarens e-postadress eller lösenord till extern applikation. Denna metod för WordPress REST API OAuth 2.0-autentisering involverar användningen av OAuth 2.0-protokollflödet för att erhålla säkerhetsåtkomsttoken eller id-token (JWT-token) och den token kommer att användas för att autentisera WordPress REST API-slutpunkter. Varje gång en begäran om åtkomst till WordPress REST API-slutpunkt görs, kommer autentiseringen att göras mot den åtkomsttoken/id-token (JWT-token), och på basis av verifieringen av den API-bärartoken, resurserna för det API begäran kommer att tillåtas åtkomst.
Tokenen som tillhandahålls med OAuth 2.0-autentiseringsmetoden är mycket krypterad och säker, varför säkerheten inte äventyras. Det är den säkraste metoden för att autentisera/skydda WordPress REST API-slutpunkter. Denna metod liknar något JWT-autentiseringsmetoden men mycket säkrare på grund av olika fördelar med OAuth 2.0-protokollet.
WordPress REST API Authentication plugin ger säkerheten från obehörig åtkomst till dina WordPress REST API:er.
Användningsfall: Registrera WordPress-användare eller autentisera/logga in användare på externa plattformar baserat på WordPress-uppgifter via WordPress REST API
Anta att du har ett inloggningsformulär i din applikation och vill autentisera användaren på grundval av deras inloggningsuppgifter för WordPress, då kommer OAuth 2.0-autentisering i REST API-metoden att hjälpa dig att uppnå det. Insticksprogrammet tillhandahåller ett WordPress-inloggnings-API. Du kan enkelt skicka WordPress-uppgifterna för den användaren till detta API och baserat på valideringen kommer du att få autentiseringen och svaret.
Implementering av OAuth 2.0-autentisering i REST API-metoden kan också användas för att registrera användare i WordPress med hjälp av WordPress-användarens administratörsuppgifter. Genom att använda plugin OAuth 2.0 token endpoint kan du skicka WordPress användarreferenser som har administratörsfunktioner så att token som genereras kommer att ha admin kapacitet kan användas för att utföra operationer som användarregistrering för vilka administrativa privilegier krävs. När du har token kan du använda denna token med wordPress '/users' API för att registrera användare i WordPress via REST API-begäran.
Användningsfall: Autentisera/skydda WordPress REST API-slutpunkter på ett säkert sätt eller registrera användare i WordPress utan att använda adminanvändaruppgifter.
Om du vill komma åt WordPress REST API utan att skicka inloggningsuppgifterna för WordPress eller vill registrera användarna i WordPress på ett säkert sätt utan att behöva skicka inloggningsuppgifterna för administratören för WordPress och istället skicka klientuppgifterna som tillhandahålls av plugin-programmet, så är den här metoden perfekt lösning så att det inte finns någon chans att användarens autentiseringsuppgifter äventyras.
Insticksprogrammet fungerar både som en OAuth 2.0-identitetsleverantör (Server) som tillhandahåller token och REST API-autentisering för autentisering av dessa WordPress REST API-slutpunkter på basis av token. Därför ger det största möjliga säkerhet för att erhålla token och den token kan användas för att autentisera REST API-begäran.
1. REST API-begäran kommer att göras med lämpliga parametrar för att erhålla token för vårt plugin. Vårt plugin kommer att fungera som en OAuth 2.0-identitetsleverantör och tillhandahåller åtkomsttoken.
2. Den faktiska REST API-begäran för att få tillgång till resursen kommer att göras med åtkomsttoken som mottogs från det sista steget som passerades i Auktoriseringshuvudet med tokentyp som Bärare. Pluginet fungerar nu som Authenticator för att autentisera API:t på basis av tokens giltighet. Om token valideras framgångsrikt kommer API-begäraren att tillåtas komma åt resursen annars på den misslyckade valideringen kommer felsvaret att returneras.
Relaterat användningsfall:
Nu har plugin-installationsdelen gjorts framgångsrikt. Nedan kommer delen där den faktiska säkerhetsåtkomsten/JWT-tokenen kommer att erhållas och användas vidare för att komma åt WordPress REST API:er.
Request: POST https://<domain-name>/wp-json/api/v1/token
Body:
grant_type =<password>
username =<wordpress username>
password = <wordpress password>
client_id =<client id>
Sample curl Request Format-
curl -d "grant_type=password&username=<wordpress_username>&password=<wordpress_password>&client_id=<client_id>"
-X POST http://<wp_base_url>/wp-json/api/v1/token
Request: POST https://<domain-name>/wp-json/api/v1/token
Body:
grant_type = <refresh_token>
refresh_token = <Refresh Token>
Sample curl Request Format-
curl -d "grant_type=refresh_token&refresh_token=<refresh_token>&client_id=<client_id>&client_secret=<client_secret>"
-X POST http://<wp_base_url>/wp-json/api/v1/token
Request: GET https://<domain-name>/wp-json/wp/v2/posts
Header: Authorization :Bearer <access_token /id_token>
Request: POST https://<domain-name>/wp-json/api/v1/token
Body:
grant_type = <client_credentials>
client_id = <client id>
client_secret = <client secret>
Sample curl Request Format-
curl -d "grant_type=client_credentials&client_id=<client_id>&client_secret=<client_secret>"
-X POST http://<wp_base_url>/wp-json/api/v1/token
Request: POST https://<domain-name>/wp-json/api/v1/token
Body:
grant_type = <refresh_token>
refresh_token = <Refresh Token>
Sample curl Request Format-
curl -d "grant_type=refresh_token&refresh_token=<refresh_token>&client_id=<client_id>&client_secret=<client_secret>"
-X POST http://<wp_base_url>/wp-json/api/v1/token
Request: GET https://<domain-name>/wp-json/wp/v2/posts
Header: Authorization : Bearer <access_token /id_token>
1. Uppdatera token -
Du kan aktivera det här alternativet om du vill ta emot en sträng som är en uppdateringstoken tillsammans med åtkomsttoken eller JWT-token i tokenslutpunktsbegäran. Det kommer att tillåta användaren att komma åt samma resurser som han beviljades tidigare. Med den nya token skapad ska användaren inte få åtkomst utöver det ursprungliga tillståndet. Uppdatera tokens tillåter auktoriseringsservrar att använda korta tidsperioder (livstid) för åtkomsttoken utan att behöva involvera användaren vid tokens utgång. Med denna token kan du återskapa åtkomsttoken/JWT-token eftersom de är tänkta att löpa ut inom kort för att öka säkerheten.
2. Återkalla token -
Genom att aktivera det här alternativet kan du återkalla den befintliga åtkomsttoken/JWT-token för att göra den ogiltig och därför kan den specifika token inte användas för att autentisera WP REST-API:erna. RESTful API validerar applikationsuppgifterna först och om token utfärdades till applikationen som gör begäran om återkallelse. Om valideringen inte lyckas, avvisas den specifika begäran och felet visas i applikationen. API:et ogiltigförklarar token och token kan inte användas igen efter att den har återkallats. Varje återkallelsebegäran ogiltigförklarar de tokens som utfärdades för samma typ av auktorisationsbeviljande.
var client = new RestClient("http://<wp_base_url>/wp-json/api/v1/token ");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AlwaysMultipartFormDatatrue;
request.AddParameter("grant_type", "client_credentials");
request.AddParameter("client_id", "<client_id>");
request.AddParameter("client_secret", "<client_secret>");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder().build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("grant_type", "client_credentials");
.addFormDataPart("client_id", "<client_id>");
.addFormDataPart("client_secret", "<client_secret>");
.build();
Request request = new Request.Builder()
.url("http://<wp_base_url>/wp-json/api/v1/token ")
.method("POST", null)
.build();
Response responseclient.newCall(request).execute();
var form = new FormData();
form.append("grant_type", "client_credentials");
form.append("client_id", "<client_id>");
form.append("client_secret", "<client_secret>");
var settings = {
"url": "http://<wp_base_url>/wp-json/api/v1/token ",
"method": "POST",
"timeout": 0,
"processData": false,
"mimeType": "multipart/form-data",
"contentType": false,
"data": form
};
$.ajax(settings).done(function (response) {
console.log(response);
});
<?php
$curl = curl_init();
curl_setopt_array($curl, array
(
CURLOPT_URL => 'http://%3Cwp_base_url%3E/wp-json/api/v1/token',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => array('grant_type' => 'client_credentials','client_id' => '<client_id>','client_secret' => '<client_secret>'),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
import http.client
import mimetypes
from codecs import encode
conn = http.client.HTTPSConnection("<wp_base_url>")
dataList= []
boundary = 'wL36Yn8afVp8Ag7AmP8qZ0SA4n1v9T'
dataList.append(encode('--' + boundary))
dataList.append(encode('Content-Disposition: form-data; name=grant_type;'))
dataList.append(encode('Content-Type: {}'.format('text/plain')))
dataList.append(encode(''))
dataList.append(encode("client_credentials"))
dataList.append(encode('--' + boundary))
dataList.append(encode('Content-Disposition: form-data; name=client_id;'))
dataList.append('Content-Type: {}'.format('text/plain')))
dataList.append(encode(''))
dataList.append(encode("<client_id>"))
dataList.append(encode('--'+ boundary))
dataList.append(encode('Content-Disposition: form-data; name=client_secret;'))
dataList.append(encode('Content-Type: {}'.format('text/plain')))
dataList.append(encode(''))
dataList.append(encode("<client_secret<"))
dataList.append(encode('--'+boundary+'--'))
dataList.append(encode(''))
body = b'\r\n'.join(dataList)
payload= body
headers = {
'Content-type': 'multipart/form-data; boundary={}'.format(boundary)
}
conn.request("POST", "/wp-json/api/v1/token ", payload, headers)
res= conn.getresponse()
data = res.read()
print (data.decode("utf-8"))
var client = new RestClient("http://<wp_base_url>/wp-json/api/v1/token ");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AlwaysMultipartFormData true;
request.AddParameter("grant_type", "password");
request.AddParameter("username", "<wordpress_username>");
request.AddParameter("password", "<wordpress_password>");
request.AddParameter("client_id", "<client_id>");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder().build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("grant_type", "password");
.addFormDataPart("username", "<wordpress_username>");
.addFormDataPart("password", "<wordpress_password>");
.addFormDataPart("client_id", "<client_id>");
.build();
Request request = new Request.Builder()
.url("http://<wp_base_url>/wp-json/api/v1/token ")
.method("POST", null)
.build();
Response responseclient.newCall(request).execute();
var form = new FormData();
form.append("grant_type", "password");
form.append("username", "<wordpress_username>");
form.append("password", "<wordpress_password>");
form.append("client_id", "<client_id>");
var settings = {
"url": "http://<wp_base_url>/wp-json/api/v1/token ",
"method": "POST",
"timeout": 0,
"processData": false,
"mimeType": "multipart/form-data",
"contentType": false,
"data": form
};
$.ajax(settings).done(function (response) {
console.log(response);
});
<?php
$curl = curl_init();
curl_setopt_array($curl, array
( CURLOPT_URL => 'http://%3Cwp_base_url%3E/wp-json/api/v1/token%20',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => array('username' => '<wordpress_username>','password' => '<wordpress_password>'),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
import http.client
import mimetypes
from codecs import encode
conn = http.client.HTTPSConnection("<wp_base_url>")
dataList= []
boundary = 'wL36Yn8afVp8Ag7AmP8qZ0SA4n1v9T'
dataList.append(encode('--' + boundary))
dataList.append(encode('Content-Disposition: form-data; name=grant_type;'))
dataList.append(encode('Content-Type: {}'.format('text/plain')))
dataList.append(encode(''))
dataList.append(encode("password"))
dataList.append(encode('--' + boundary))
dataList.append(encode('Content-Disposition: form-data; name=username;')
dataList.append('Content-Type: {}'.format('text/plain')))
dataList.append(encode(''))
dataList.append(encode("<wordpress_username>"))
dataList.append(encode('--'+ boundary))
dataList.append(encode('Content-Disposition: form-data; name=password;'))
dataList.append(encode('Content-Type: {}'.format('text/plain')))
dataList.append(encode(''))
dataList.append(encode("<wordpress_password<"))
dataList.append(encode('--'+boundary))
dataList.append(encode('Content-Disposition: form-data; name=client_id;'))
dataList.append(encode('Content-Type: {}'.format('text/plain')))
dataList.append(encode(''))
dataList.append(encode("<client_id>"))
dataList.append(encode('--'+boundary+'--'))
dataList.append(encode(''))
body = b'\r\n'.join(dataList)
payload= body
headers = {
'Content-type': 'multipart/form-data; boundary={}'.format(boundary)
}
conn.request("POST", "/wp-json/api/v1/token ", payload, headers)
res= conn.getresponse()
data = res.read()
print (data.decode("utf-8"))
var client = new RestClient("http://<wp_base_url>/wp-json/api/v1/token ");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AlwaysMultipartFormDatatrue;
request.AddParameter("grant_type", "refresh_token");
request.AddParameter("client_id", "<client_id>");
request.AddParameter("client_secret", "<client_secret>");
request.AddParameter("refresh_token", "<refresh_token>");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder().build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("grant_type", "refresh_token");
.addFormDataPart("client_id", "<client_id>");
.addFormDataPart("client_secret", "<client_secret>");
.addFormDataPart("refresh_token", "<refresh_token>");
.build();
Request request = new Request.Builder()
.url("http://<wp_base_url>/wp-json/api/v1/token ")
.method("POST", null)
.build();
Response responseclient.newCall(request).execute();
var form = new FormData();
form.append("grant_type", "refresh_token");
form.append("client_id", "<client_id>");
form.append("client_secret", "<client_secret>");
form.append("refresh_token", "<refresh_token>");
var settings = {
"url": "http://<wp_base_url>/wp-json/api/v1/token ",
"method": "POST",
"timeout": 0,
"processData": false,
"mimeType": "multipart/form-data",
"contentType": false,
"data": form
};
$.ajax(settings).done(function (response) {
console.log(response);
});
<?php
$curl = curl_init();
curl_setopt_array($curl, array
(
CURLOPT_URL => 'http://%3Cwp_base_url%3E/wp-json/api/v1/token',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => array('grant_type' => 'refresh_token','client_id' => '<client_id>','client_secret' => '<client_secret>','refresh_token' => '<refresh_token>'),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
import http.client
import mimetypes
from codecs import encode
conn = http.client.HTTPSConnection("<wp_base_url>")
dataList= []
boundary = 'wL36Yn8afVp8Ag7AmP8qZ0SA4n1v9T'
dataList.append(encode('--' + boundary))
dataList.append(encode('Content-Disposition: form-data; name=grant_type;'))
dataList.append(encode('Content-Type: {}'.format('text/plain')))
dataList.append(encode(''))
dataList.append(encode("refresh_token"))
dataList.append(encode('--' + boundary))
dataList.append(encode('Content-Disposition: form-data; name=client_id;'))
dataList.append('Content-Type: {}'.format('text/plain')))
dataList.append(encode(''))
dataList.append(encode("<client_id>"))
dataList.append(encode('--'+ boundary))
dataList.append(encode('Content-Disposition: form-data; name=client_secret;'))
dataList.append(encode('Content-Type: {}'.format('text/plain')))
dataList.append(encode(''))
dataList.append(encode("<client_id>"))
dataList.append(encode('--'+ boundary))
dataList.append(encode('Content-Disposition: form-data; name=refresh_token;'))
dataList.append(encode('Content-Type: {}'.format('text/plain')))
dataList.append(encode(''))
dataList.append(encode("<refresh_token<"))
dataList.append(encode('--'+boundary+'--'))
dataList.append(encode(''))
body = b'\r\n'.join(dataList)
payload= body
headers = {
'Content-type': 'multipart/form-data; boundary={}'.format(boundary)
}
conn.request("POST", "/wp-json/api/v1/token ", payload, headers)
res= conn.getresponse()
data = res.read()
print (data.decode("utf-8"))
var client = new RestClient("http://<wp_base_url>/wp-json/wp/v2/posts");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
request.AddHeader = ("Authorization", "Bearer < access_token / id_token >")
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder().build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
.url("http://<wp_base_url>//wp-json/wp/v2/posts ")
.method("GET", body)
.addHeader = ("Authorization", "Bearer < access_token / id_token >")
.build();
Response responseclient.newCall(request).execute();
var settings = {
"url": "http://<wp_base_url>/wp-json/wp/v2/posts ",
"method": "GET",
"timeout": 0,
"headers": {
"Authorization": "Bearer < access_token / id_token >"
},
};
$.ajax(settings).done(function (response) {
console.log(response);
});
<?php
$curl = curl_init();
curl_setopt_array($curl, array
(
curl_setopt_array($curl, array(
CURLOPT_URL => 'http://%3Cwp_base_url%3E/wp-json/wp/v2/posts%20',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer < access_token / id_token >'
);
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
import http.client
conn = http.client.HTTPSConnection("<wp_base_url>")
payload = "
headers = {
'Authorization': 'Bearer < access_token / id_token >'
}
conn.request("GET", "/wp-json/wp/v2/posts ", payload, headers)
res= conn.getresponse()
data = res.read()
print (data.decode("utf-8"))
a) Beviljningsmetod för OAuth 2.0 lösenord:
b) Metod för beviljande av OAuth 2.0-klientuppgifter:
c) REST API-begäran för att få den faktiska resursen:
Denna funktion tillåter begränsning av REST API-åtkomst baserat på användarrollerna. Du kan vitlista rollerna för vilka du vill tillåta åtkomst till den begärda resursen för REST-API:erna. Så närhelst en REST API-begäran görs av en användare, kommer hans roll att hämtas och får endast komma åt resursen om hans roll är vitlistad.
Hur konfigurerar man det?
Notera: Den rollbaserade begränsningsfunktionen är giltig för grundläggande autentisering (användarnamn: lösenord), JWT-metoden och OAuth 2.0 (lösenordsbeviljande).
Den här funktionen ger ett alternativ att välja en anpassad rubrik istället för standardhuvudet "Auktorisering".
Det kommer att öka säkerheten eftersom du har rubriken namngiven med ditt "anpassade namn", så om någon gör REST API-begäran med en rubrik som "Authorization" kommer han inte att kunna komma åt API:erna.
Hur konfigurerar man det?
Den här funktionen låter dig vitlista dina REST-API:er så att dessa kan nås direkt utan autentisering. Därför är alla dessa vitlistade REST API:er offentligt tillgängliga.
Hur konfigurerar man det?
Den här funktionen är tillämplig för JWT- och OAuth 2.0-metoder som använder tidsbaserade tokens för att autentisera WordPress REST API-slutpunkter. Den här funktionen låter dig ställa in den anpassade utgången för tokens så att token inte längre kommer att vara giltig när token upphör.
Hur konfigurerar man det?
Maila oss vidare apisupport@xecurify.com för snabb vägledning (via e-post/möte) om ditt krav och vårt team hjälper dig att välja den bästa lämpliga lösningen/planen enligt dina krav.
Behövs hjälp? Vi är här!
Tack för din förfrågan.
Om du inte hör från oss inom 24 timmar, skicka gärna ett uppföljningsmail till info@xecurify.com
Denna sekretesspolicy gäller för miniorange webbplatser som beskriver hur vi hanterar personuppgifterna. När du besöker någon webbplats kan den lagra eller hämta informationen i din webbläsare, mestadels i form av cookies. Den här informationen kan handla om dig, dina preferenser eller din enhet och används mest för att webbplatsen ska fungera som du förväntar dig. Informationen identifierar dig inte direkt, men den kan ge dig en mer personlig webbupplevelse. Klicka på kategorirubrikerna för att kontrollera hur vi hanterar cookies. För sekretesspolicyn för våra lösningar kan du se integritetspolicy.
Nödvändiga cookies hjälper till att göra en webbplats fullt användbar genom att aktivera de grundläggande funktionerna som webbplatsnavigering, inloggning, fylla i formulär etc. De cookies som används för funktionaliteten lagrar ingen personlig identifierbar information. Vissa delar av webbplatsen kommer dock inte att fungera korrekt utan cookies.
Dessa cookies samlar endast in samlad information om trafiken på webbplatsen inklusive - besökare, källor, sidklick och visningar etc. Detta gör att vi kan veta mer om våra mest och minst populära sidor tillsammans med användarnas interaktion med de handlingsbara elementen och därmed låta oss veta mer om våra mest och minst populära sidor vi förbättrar prestandan på vår webbplats såväl som våra tjänster.