WordPress REST API 認証プラグインは、WordPress REST API への不正アクセスからのセキュリティを提供します。
の検索結果 :
×WordPress REST API エンドポイント認証のこの方法には、JWT (JSON Web トークン) に基づく検証時の REST API アクセスが含まれます。WordPress REST API エンドポイントへのアクセス要求が行われるたびに、認証はその JWT トークンに対して行われます。そして、その JWT トークンの検証に基づいて、その API リクエストのリソースへのアクセスが許可されます。 JWT トークンは WordPress ユーザー認証情報に基づいて生成され、高度に暗号化されるため、セキュリティが侵害されることはありません。
WordPress REST API 認証プラグインは、WordPress REST API への不正アクセスからのセキュリティを提供します。
モバイル/Web アプリケーションがあり、ユーザーの機能に基づいて WordPress REST API エンドポイントへのアクセスを許可し、その特定の機能を持つユーザーのみが作成/更新操作を実行し、他のロールを持つユーザーは表示のみできるようにしたいとします。 このような場合、ユーザーの資格情報に従って取得した JWT(JSON Web Token) を使用して REST API エンドポイントを認証することができ、WordPress JWT 認証を使用すると非常に安全に認証を行うことができます。 したがって、Authorization ヘッダーで渡されたこの JWT を使用して REST API リクエストを作成すると、リソース/データへのアクセスが許可されるか、特定のユーザー機能を必要とする WordPress 操作を実行するための機能/承認が提供されます。 WordPress REST API の JWT 認証は、HSA または RSA の 2 つの方法を使用してトークンの暗号化を提供し、有効期間は限られています。 したがって、セキュリティは心配ありません。
JWT 認証用に生成された JWT トークンは WordPress ユーザー情報で構成されているため、このトークンは別のアプリケーションで有効な秘密キー/公開証明書を使用してデコードされ、そこでユーザーを作成したり、更新されたユーザー情報を同期したりできます。 JWT トークンは時間ベースのトークンでもあり、要件に従って設定できる一定の時間が経過すると期限切れになります。そのため、期限切れになると、API へのアクセスが許可されなくなり、ユーザー情報もデコードできなくなります。 WordPress REST API の JWT 認証は、安全な認証方法です。
1. WordPress REST API リクエストは、JWT トークンを取得するために必要なすべてのパラメーターを使用して作成されます。 取得された JWT トークンは、HSA または RSA アルゴリズムを使用して暗号化された形式で提供されるため、最大限のセキュリティが確保されます。
2. 次に、リソース/データにアクセスするため、または WordPress データベースで操作を実行するための実際の WordPress REST API リクエストは、最後のステップで取得した JWT トークンを使用して作成され、トークン タイプを Bearer として Authorization ヘッダーに渡され、プラグインはその JWT トークンを検証し、検証または認証が成功すると、API リクエスターにリソースが提供され、そうでない場合はエラー応答が返されます。 したがって、私たちのプラグインは、JWT トークン プロバイダーと JWT トークン バリデーターの両方として機能します。
関連する使用例:
Request:POST https://<domain-name>/wp-json/api/v1/token
Body:username = <wordpress username>
password = <wordpress password>
Sample curl Request Format-
curl -d "username=<wordpress_username>&password=<wordpress_password>"
-X POST http://<wp_base_url>/wp-json/api/v1/token
この API エンドポイントは次のように呼ばれます。 ユーザ認証 APIまたは WordPress ログイン API エンドポイント つまり、WordPress ユーザー認証情報を使用してこのエンドポイントにリクエストを送信し、認証情報が有効であれば、JWT トークンを含む成功応答が返され、そうでない場合は、それに応じてエラー応答が表示されます。
Request: GET https://<domain-name>/wp-json/wp/v2/posts
Header: Authorization : Bearer <JWT token>
Sample curl Request Format-
curl -H "Authorization:Bearer <jwt_token >"
-X GET http://<wp_base_url>/wp-json/wp/v2/posts
おめでとう! miniOrange WordPress REST API 認証メソッドを使用して、REST API 呼び出しの JWT 認証メソッドが正常に構成されました。
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 < jwt_token >");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder().build();
Request request = new Request.Builder()
.url("http://<wp_base_url>/wp-json/wp/v2/posts ")
.method("GET", null)
.addHeader = ("Authorization", "Bearer < jwt_token >")
.build();
Response response= client.newCall(request).execute();
var settings = {
"url": "http://<wp_base_url>/wp-json/wp/v2/posts ",
"method": "GET",
"timeout": 0,
"headers": {
"Authorization": "Bearer < jwt_token >"
},
};
$.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 => 'GET',
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer < jwt_token >'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
import http.client
conn = http.client.HTTPSConnection("<wp_base_url>")
payload= "
headers = {
'Authorization': 'Bearer < jwt_token >'
}
conn.request("GET", "/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/api/v1/token ");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AlwaysMultipartFormData = true;
request.AddParameter("username", "<wordpress_username>");
request.AddParameter("password", "<wordpress_password>");
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", "<wordpress_username>");
.addFormDataPart("password", "<wordpress_password>");
.build();
Request request = new Request.Builder()
.url("http://<wp_base_url>/wp-json/api/v1/token ")
.method("POST", body)
.build();
Response responseclient.newCall(request).execute();
var form = new FormData();
form.append("username", "<wordpress_username>");
form.append("password", "<wordpress_password>");
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=username;'))
dataList.append(encode('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(''))
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"))
Postman を使用して REST API リクエストを作成するには、次の手順に従います。
1. ロールベースの REST API の制限:
この機能を使用すると、ユーザーのロールに基づいて REST API アクセスを制限できます。 REST API の要求されたリソースへのアクセスを許可するロールをホワイトリストに登録できます。 したがって、ユーザーによって REST API リクエストが行われるたびに、ユーザーのロールがフェッチされ、そのロールがホワイトリストに登録されている場合にのみリソースへのアクセスが許可されます。
それを構成する方法は?
注: ロールベースの制限機能は、Basic 認証 (ユーザー名: パスワード)、JWT 方式、および OAuth 2.0 (パスワード付与) に対して有効です。
2. カスタムヘッダー
この機能では、デフォルトの「Authorization」ヘッダーではなくカスタム ヘッダーを選択するオプションが提供されます。
ヘッダーに「カスタム名」を付けるとセキュリティが強化されるため、誰かがヘッダーを「Authorization」として REST API リクエストを作成した場合、その人は API にアクセスできなくなります。
それを構成する方法は?
3. REST APIを除外する
この機能を使用すると、REST API をホワイトリストに登録して、認証なしで直接アクセスできるようになります。 したがって、これらのホワイトリストに登録された REST API はすべて公開されています。
それを構成する方法は?
4. カスタムトークンの有効期限
この機能は、時間ベースのトークンを使用して WordPress REST API エンドポイントを認証する JWT および OAuth 2.0 メソッドに適用できます。 この機能を使用すると、トークンの有効期限が切れるとトークンが無効になるように、トークンのカスタム有効期限を設定できます。
それを構成する方法は?
したがって、このカスタム トークンの有効期限機能を使用すると、セキュリティがさらに強化されます。
5. JWT ベースのトークンの署名の検証
この機能により、JWT トークンの JWT 署名の安全な署名が可能になり、JWT トークンの安全性がさらに高まり、署名はクライアント シークレット/証明書を使用してのみデコードできるようになります。 これは、あなたの署名が非公開であり、他の人が見ることができないことを意味します。
HS2 と RS256 の 256 つの署名アルゴリズムのサポートを提供しています。そのため、上の図に示すように、ドロップダウンからいずれの署名アルゴリズムも選択できます。
また、JWT の署名に使用されるクライアント シークレットまたは証明書を追加する必要があります。
メールでお問い合わせください apisupport@xecurify.com お客様の要件に関する迅速なガイダンス(電子メール/会議経由)が必要です。当社のチームは、お客様の要件に応じて最適なソリューション/プランの選択をお手伝いします。
助けが必要? 私たちはここにいます!
このプライバシーに関する声明は、個人情報の取り扱い方法を説明する miniorange の Web サイトに適用されます。 Web サイトにアクセスすると、ブラウザ上の情報が主に Cookie の形式で保存または取得されることがあります。 この情報はあなた、あなたの設定、またはデバイスに関するものであり、主にサイトを期待どおりに動作させるために使用されます。 この情報はお客様を直接特定するものではありませんが、よりパーソナライズされた Web エクスペリエンスを提供することができます。 カテゴリの見出しをクリックして、Cookie の処理方法を確認してください。 当社のソリューションのプライバシーに関する声明については、以下を参照してください。 プライバシーポリシーをご覧ください。.
必要な Cookie は、サイト ナビゲーション、ログイン、フォームへの入力などの基本機能を有効にすることで、Web サイトを十分に利用できるようにするのに役立ちます。この機能に使用される Cookie には個人を特定できる情報は保存されません。 ただし、Web サイトの一部の部分は Cookie がないと正しく動作しません。
これらの Cookie は、訪問者、ソース、ページのクリックとビューなどを含む、Web サイトのトラフィックに関する集約情報のみを収集します。これにより、当社は、最も人気のあるページと最も人気のないページ、およびアクション可能な要素でのユーザーのインタラクションについてさらに詳しく知ることができるため、当社は、当社のウェブサイトおよび当社のサービスのパフォーマンスを向上させます。