WordPress REST API 認証プラグインは、WordPress REST API への不正アクセスからのセキュリティを提供します。
の検索結果 :
×WordPress REST API 基本認証を使用すると、ユーザー名、パスワード、またはクライアント資格情報から生成された API トークンを検証することで、WordPress REST API へのアクセスを検証できます。
WordPress REST API エンドポイントにアクセスするリクエストが行われるたびに、関連付けられたトークンに対する認証が行われます。 その後、その特定の API リクエストのリソースへのアクセスは、この API トークンの検証の成功に基づいて決定されます。 セキュリティを維持するために、アクセス トークンは暗号化され、セキュリティ/データ侵害を防ぎます。
WordPress REST API 認証プラグインは、WordPress REST API への不正アクセスからのセキュリティを提供します。
1. ユーザーの認証情報に基づいて、次のようにします。
Android/iOS アプリがあり、モバイル アプリに個人的なフィードやブログを投稿する機能をユーザーに提供しているとします。
この場合、モバイル アプリでのリクエストを認証する必要があります。
この場合、ユーザー名とパスワードを使用した WordPress 基本認証 REST API が最適な認証方法です。 ユーザーの権限や機能を必要とする REST API を介して WordPress 操作を実行すると便利です。
ユーザー セッションが作成され、WordPress 機能に基づいて、REST API コンテンツにアクセスしたり、必要な操作を実行したりすることが許可されます。
2. クライアントの認証情報に基づいて、次の手順を実行します。
Android または iOS アプリケーションがあり、その REST API エンドポイントを通じて WordPress コンテンツと対話したいと考えていると想像してください。 ただし、侵入者が WP サイトに不正アクセスできる可能性がある漏洩を防ぐために、WP ユーザー資格情報を利用することには消極的です。
このようなシナリオでは、WordPress Basic Authentication Rest API を使用し、クライアント ID とクライアント シークレットを利用して WP ユーザー資格情報を保護することをお勧めします。
この方法では、プラグインによって提供されるクライアント ID とクライアント シークレットを各リクエストに含めるだけで済みます。 したがって、クライアント ID とシークレットは各 API リクエストの Basic Authorization ヘッダー内で暗号化された形式で送信されるため、セキュリティは損なわれません。 これらの資格情報は検証され、検証に成功すると、WP API Basic Auth によって要求された API へのアクセスが許可されます。
ユーザー名とパスワードを使用した REST API 基本認証:
クライアント ID とクライアント シークレットを使用した REST API 基本認証:
Request: GET https://<domain-name>/wp-json/wp/v2/posts
Header: Authorization: Basic base64encoded <client-id:client-secret>
Sample Request Format-
Example => Client ID : pSYQsKqTndNVpNKcnoZd and Client Secret : SrYPTViHdCbvkWyTfWrSltavTMeJjaOHCye
Sample curl Request Format-
curl -H "Authorization:Basic base64encoded <clientid:clientsecret>"
-X POST http://<wp_base_url>/wp-json/wp/v2/users
-d"username=test&email=test@test.com&password=test&name=test"
base64_encode(‘pSYQsKqTndNVpNKcnoZd:SrYPTViHdCbvkWyTfWrSltavTMeJjaOHCye’) will results into
‘cFNZUXNLcV RuZE5WcE5LY25vWmQ6U3JZUFRWaUhkQ2J2a1d5VGZXclNsdGF2VE1lSmphT0hDeWU=’ as output.
Sample request: GET https://<domain-name>/wp-json/wp/v2/posts
Header: Authorization :Basic eGw2UllOdFN6WmxKOlNMRWcwS1ZYdFVrbm5XbVV2cG9RVFNLZw==
ユーザー名とパスワードを使用した REST API 基本認証:
Request: GET https://<domain-name>/wp-json/wp/v2/posts
Header: Authorization: Basic base64encoded <username:password>
Sample Request Format-
Example => username : testuser and password : password@123
Sample curl Request Format-
curl -H "Authorization:Basic base64encoded <username:password>"
-X POST http://<wp_base_url>/wp-json/wp/v2/posts -d "title=sample post&status=publish"
base64_encode(‘testuser:password@123’) will results into ‘eGw2UllOdFN6WmxKOlNMRWcwS1ZYdFVrbm5XbVV2cG9RV FNLZw==’ as output.
Sample request: GET https://<domain-name>/wp-json/wp/v2/posts
Header: Authorization : Basic eGw2UllOdFN6WmxKOlNMRWcwS1ZYdFVrbm5XbVV2cG9RVFNLZw==
var client = new RestClient("http://<wp_base_url>/wp-json/wp/v2/posts ");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AlwaysMultipartFormData = true;
request.AddParameter("title", "Sample Post");
request.AddParameter("status", "publish");
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("title","Sample Post")
.addFormDataPart("status", "publish")
.build();
Request request = new Request.Builder()
.url("http://<wp_base_url>/wp-json/wp/v2/posts ")
.method("POST", body)
.build();
Response responseclient.newCall(request).execute();
var form = new FormData();
form.append("title","Sample Post");
form.append("status", "publish");
var settings = {
"url": "http://<wp_base_url>/wp-json/wp/v2/posts ",
"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/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 => 'POST',
CURLOPT_POSTFIELDS => array('title' => 'Sample Post','status' => 'publish'),
));
$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=title;'))
dataList.append(encode('Content-Type: {}'.format('text/plain')))
dataList.append(encode(''))
dataList.append(encode("Sample Post"))
dataList.append(encode('--' + boundary))
dataList.append(encode('Content-Disposition: form-data; name=status;'))
dataList.append('Content-Type: {}'.format('text/plain')))
dataList.append(encode(''))
dataList.append(encode("publish"))
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/wp/v2/posts ", 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.POST);
request.AddHeader("Authorization", "Basic base64encoded < clientid:clientsecret > ");
request.AlwaysMultipartFormData = true;
request.AddParameter("username", "test");
request.AddParameter("email", "test@test.com");
request.AddParameter("password", "test");
request.AddParameter("name", "test");
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("username","test")
.addFormDataPart("email","test@test.com")
.addFormDataPart("password","test")
.addFormDataPart("name","test")
.build();
Request request = new Request.Builder()
.url("http://<wp_base_url>/wp-json/wp/v2/posts ")
.method("POST", body)
.addHeader ("Authorization", "Basic base64encoded < clientid:clientsecret > ")
.build();
Response responseclient.newCall(request).execute();
var form = new FormData();
form.append("username", "test");
form.append("email", "test@test.com");
form.append("password", "test");
form.append("name", "test");
var settings = {
"url": "http://<wp_base_url>/wp-json/wp/v2/posts ",
"method": "POST",
"timeout": 0,
"headers": {
"Authorization": "Basic base64encoded < clientid:clientsecret > "
},
"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/wp/v2/users',
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' => 'test','email' => 'test@test.com','password' => 'test','name' => 'test'),
CURLOPT_HTTPHEADER => array(
'Authorization: Basic base64encoded < clientid:clientsecret > '
),
))
$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=username;'))
dataList.append(encode('Content-Type: {}'.format('text/plain')))
dataList.append(encode(''))
dataList.append(encode("test"))
dataList.append(encode('--' + boundary))
dataList.append(encode('Content-Disposition: form-data; name=email;'))
dataList.append('Content-Type: {}'.format('text/plain')))
dataList.append(encode(''))
dataList.append(encode("test@test.com"))
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("test"))
dataList.append(encode('--' + boundary))
dataList.append(encode('Content-Disposition: form-data; name=name;'))
dataList.append(encode('Content-Type: {}'.format('text/plain')))
dataList.append(encode(''))
dataList.append(encode("test"))
dataList.append(encode('--'+boundary+'--'))
dataList.append(encode(''))
body = b'\r\n'.join(dataList)
payload= body
headers = {
'Authorization': 'Basic base64encoded < clientid:clientsecret > ',
'Content-type': 'multipart/form-data; boundary={}'.format(boundary)
}
conn.request("POST", "/wp-json/wp/v2/posts ", payload, headers)
res= conn.getresponse()
data = res.read()
print (data.decode("utf-8"))
Postman を使用して REST API リクエストを作成するには、次の手順に従います。
a) ユーザー名とパスワードの場合
例:
ユーザー名:testuser、パスワード:password@123 の場合、base64 でエンコードされた値は「dGVzdHVzZXI6cGFzc3dvcmRAMTIz」になります。
b) クライアント ID とクライアント シークレットの場合
この機能を使用すると、ユーザーのロールに応じて REST API アクセスを制限できます。 REST API を介して、要求されたリソースへのアクセスを許可するロールを指定するオプションがあります。 したがって、ユーザーが REST API リクエストを行うと、そのロールがチェックされ、そのロールがホワイトリストに含まれている場合にのみ、リソースへのアクセスが許可されます。
それを構成する方法は?
注: ロールベースの制限機能は、Basic 認証 (ユーザー名: パスワード)、JWT 方式、および OAuth 2.0 (パスワード付与) に対して有効です。
この機能は、デフォルトのヘッダーの代わりにパーソナライズされたヘッダーを選択する機能を提供します。 「認可」 ヘッダ。 これにより、カスタム設定に従ってヘッダーに名前を付けることができるため、セキュリティが強化されます。 したがって、誰かが次の名前のヘッダーを使用して REST API リクエストを作成しようとすると、 「認可、' API へのアクセスが許可されます。
それを構成する方法は?
この機能を使用すると、特定の REST API をホワイトリストに指定し、認証を必要とせずに直接アクセスできるようにすることができます。 その結果、ホワイトリストに登録されたこれらすべての REST API がパブリックにアクセスできるようになります。
それを構成する方法は?
この機能は基本認証方法内で提供され、通常、トークンはデフォルトで Base64 エンコードを使用して暗号化されます。 ただし、詳細オプションを使用すると、安全性の高い HMAC 暗号化方式を使用してトークンを暗号化できるため、非常に高いレベルのセキュリティが保証されます。
メールでお問い合わせください oauthsupport@xecurify.com お客様の要件に関する迅速なガイダンス(電子メール/会議経由)が必要です。当社のチームは、お客様の要件に応じて最適なソリューション/プランの選択をお手伝いします。
助けが必要? 私たちはここにいます!
このプライバシーに関する声明は、個人情報の取り扱い方法を説明する miniorange の Web サイトに適用されます。 Web サイトにアクセスすると、ブラウザ上の情報が主に Cookie の形式で保存または取得されることがあります。 この情報はあなた、あなたの設定、またはデバイスに関するものであり、主にサイトを期待どおりに動作させるために使用されます。 この情報はお客様を直接特定するものではありませんが、よりパーソナライズされた Web エクスペリエンスを提供することができます。 カテゴリの見出しをクリックして、Cookie の処理方法を確認してください。 当社のソリューションのプライバシーに関する声明については、以下を参照してください。 プライバシーポリシーをご覧ください。.
必要な Cookie は、サイト ナビゲーション、ログイン、フォームへの入力などの基本機能を有効にすることで、Web サイトを十分に利用できるようにするのに役立ちます。この機能に使用される Cookie には個人を特定できる情報は保存されません。 ただし、Web サイトの一部の部分は Cookie がないと正しく動作しません。
これらの Cookie は、訪問者、ソース、ページのクリックとビューなどを含む、Web サイトのトラフィックに関する集約情報のみを収集します。これにより、当社は、最も人気のあるページと最も人気のないページ、およびアクション可能な要素でのユーザーのインタラクションについてさらに詳しく知ることができるため、当社は、当社のウェブサイトおよび当社のサービスのパフォーマンスを向上させます。