WordPress REST API OAuth 2.0 認証方法
概要
OAuth 2.0は、APIへのアクセスを認証するための最もよく選ばれる方法です。OAuth 2.0では、外部アプリケーションにユーザーのメールアドレスやパスワードを提供する必要なく認証できます。このWordPress REST API OAuth 2.0認証方法では、OAuth 2.0プロトコルフローを使用してセキュリティアクセストークンまたはIDトークン(JWTトークン)を取得し、そのトークンを使用してWordPress REST APIエンドポイントを認証します。アクセス要求が行われるたびに、 WordPress REST API エンドポイントが作成され、そのアクセス トークン/ID トークン (JWT トークン) に対して認証が行われ、その API ベアラー トークンの検証に基づいて、その API リクエストのリソースへのアクセスが許可されます。
OAuth 2.0 認証方式を使用して提供されるトークンは高度に暗号化され、安全であるため、セキュリティが侵害されることはありません。これは、WordPress REST API エンドポイントを認証/保護するための最も安全な方法です。この方法は、JWT 認証方式に似ていますが、OAuth 2.0 プロトコルのさまざまな利点により、はるかに安全です。
WordPress REST API 認証プラグインは、WordPress REST API への不正アクセスからセキュリティを提供します。このプラグインは、基本認証、API キー認証、OAuth 2.0 認証、JWT 認証など、複数の認証方法を提供します。
詳細を見る
前提条件: ダウンロードとインストール
WordPress インスタンスに管理者としてログインします。
WordPress に移動します ダッシュボード -> プラグイン をクリックします。入力したコードが正しければ、MFAの設定は正常に完了します 新規追加 .
WordPress を検索する RESTAPI認証 プラグインを選択してクリックします
今すぐインストール .
インストールしたら、をクリックします アクティブにしましょう .
ユースケース: OAuth 2.0 認証方式による REST API の保護
1. パスワードの付与:
使用例: WordPress REST API 経由で WordPress の資格情報に基づいて WordPress ユーザーを登録したり、外部プラットフォームでユーザーを認証/ログインしたりする
アプリケーションにログイン フォームがあり、WordPress ログイン認証情報に基づいてユーザーを認証したい場合、REST API 方式の OAuth 2.0 認証が役立ちます。プラグインは WordPress ログイン API を提供します。そのユーザーの WordPress 認証情報をこの API に簡単に渡すことができ、検証に基づいて認証と応答を受け取ることができます。
また、REST API メソッドで OAuth 2.0 認証を実装すると、WordPress ユーザーの管理者資格情報を使用して WordPress にユーザーを登録することもできます。プラグイン OAuth 2.0 トークン エンドポイントを使用すると、管理者機能を持つ WordPress ユーザー資格情報を渡すことができ、生成されたトークンには管理者機能があり、管理者権限が必要なユーザー登録などの操作を実行するために使用できます。トークンを取得したら、このトークンを wordPress の '/users' API で使用して、REST API リクエストを介して WordPress にユーザーを登録できます。
2. クライアントの認証情報:
ユースケース: WordPress REST API エンドポイントを安全に認証/保護するか、管理者ユーザーの資格情報を使用せずに WordPress にユーザーを登録します。
WordPress ユーザーの資格情報を渡さずに WordPress REST API にアクセスしたい場合、または WordPress の管理者ユーザーの資格情報を渡さずにプラグインによって提供されるクライアント資格情報を渡すことで WordPress にユーザーを安全に登録したい場合、この方法はユーザーの資格情報が漏洩する可能性がない完璧なソリューションです。
このプラグインは、トークンを提供する OAuth 2.0 ID プロバイダー (サーバー) と、トークンに基づいてこれらの WordPress REST API エンドポイントを認証するための REST API 認証子の両方として機能します。したがって、トークンを取得するための最大限のセキュリティが提供され、そのトークンを使用して REST API リクエストを認証できます。
REST API メソッドで OAuth 2.0 認証メソッドを実装するフローを以下に説明します。
1. プラグインのトークンを取得するために、適切なパラメーターを使用して REST API リクエストが作成されます。 私たちのプラグインは OAuth 2.0 ID プロバイダーとして機能し、アクセス トークンを提供します。
2. リソースにアクセスするための実際の REST API リクエストは、トークン タイプをベアラーとして Authorization ヘッダーに渡された最後のステップから受け取ったアクセス トークンを使用して行われます。 プラグインは、トークンの有効性に基づいて API を認証するオーセンティケーターとして機能するようになりました。 トークンが正常に検証された場合、API リクエスターはリソースへのアクセスを許可されます。それ以外の場合、検証が失敗した場合はエラー応答が返されます。
関連する使用例:
WordPress REST API を使用してログインまたはユーザー登録するにはどうすればよいですか?
API を使用して WordPress ユーザーを認証するにはどうすればよいですか?
次の REST API 認証方法の使用例をお読みください。
パスワード付与を使用した WordPress REST API OAuth 2.0:
プラグインで、「構成」に移動します。 API認証 タブをクリックして OAuth2.0認証 API 認証方法として。
現在地に最も近い OAuth 2.0 の許可 「パスワード付与」と入力します。
アクセス トークンまたは JWT トークンとして任意のトークン タイプを選択できるようになりました。
アクセス トークンは、生成されるユーザーに関連付けられたランダムな文字列ですが、JWT トークンまたは ID トークンは、トークンが生成されるユーザーにエンコードされたユーザー情報からなる JWT 標準に従って形成されます。 このトークンはそのキーを使用してデコードでき、ユーザーの詳細を解析できます。 したがって、このトークンは、ユーザーの WP プロファイルの詳細を後で取得する必要がある場合に推奨されます。
今後はクリック 構成の保存 ボタンをクリックして OAuth 2.0 認証設定を保存し、この認証方法を有効にして WordPress REST API エンドポイントを保護します。
一度クリックすると 構成を保存し、 クライアント ID、クライアント シークレット、トークン エンドポイント (セキュリティ トークンを受け取るために API 呼び出しを行う必要があるエンドポイント) を取得します。
これでプラグインのセットアップ部分は正常に完了しました。 以下は、実際のセキュリティ アクセス/JWT トークンが取得され、WordPress REST API にアクセスするためにさらに使用される部分です。
ここで、次の XNUMX つの呼び出しを行う必要があります。
I : トークンを取得する
アクセス トークン/JWT トークンを取得するには、以下に示すように、プラグインによって提供される OAuth 2.0 トークン エンドポイントへの API 呼び出しを行う必要があります。
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
-H 'app-name: TheAppName'
リフレッシュトークンの使用
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
-H 'app-name: TheAppName'
II : 実際の WordPress REST API リクエストを送信する
OAuth 2.0 パスワード付与フローを使用して access_token / id_token (JWT トークン) を取得したら、以下に示すように、それを使用して WordPress REST API エンドポイントへのアクセスをリクエストできます。
Request: GET https://<domain-name>/wp-json/wp/v2/posts
Header: Authorization : Bearer <access_token /id_token>
注: 上記のトークンはデフォルトで 1 時間有効です。 有効期限が切れる前に、同じトークンを複数の REST API リクエストに複数回使用できます。 トークンの有効期限が切れたら、WordPress REST API エンドポイント アクセスをリクエストするために新しいトークンを作成する必要があります。
チェックアウトします
エラー応答
OAuth 2.0 の場合はパスワード許可を使用します。
クライアント資格情報付与を使用した WordPress REST API OAuth 2.0:
プラグインで、「構成」に移動します。 API認証 タブをクリックして OAuth2.0認証 API 認証方法として。
次に、 OAuth 2.0 の許可 「クライアント資格情報の付与」と入力します。
設定の保存をクリックすると、 顧客ID ,
クライアントシークレット および トークンエンドポイント .
ここでは、次の XNUMX つの呼び出しを行う必要があります。
I : トークンを取得する
上記の設定を保存すると、クライアント ID、クライアント シークレット、トークン エンドポイントが取得されます。
トークンを取得するには、以下に示すようにトークン リクエストを送信する必要があります。
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
-H 'app-name: TheAppName'
リフレッシュトークンの使用
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
-H 'app-name: TheAppName'
II : API リクエストの送信
OAuth 2.0 クライアント認証情報によって access_token / id_token を取得したら、以下に示すように、それを使用して WordPress REST API エンドポイントへのアクセスをリクエストできます。
Request: GET https://<domain-name>/wp-json/wp/v2/posts
Header: Authorization : Bearer <access_token /id_token>
注: 上記のトークンはデフォルトで 1 時間有効です。 有効期限が切れる前に、同じトークンを複数の REST API リクエストに複数回使用できます。 トークンの有効期限が切れたら、WordPress REST API エンドポイント アクセスをリクエストするために新しいトークンを作成する必要があります。
チェックアウトします
エラー応答
OAuth 2.0 の場合は、クライアント資格情報の付与を使用します。
チェックアウトします
開発者のドキュメント
のガイドをご参照ください。
追加のセキュリティ機能
この方法では、トークンをより詳細に制御できる追加のセキュリティ機能が提供され、Web サイトのセキュリティが強化されます。
1. リフレッシュトークン -
トークン エンドポイント リクエストでアクセス トークンまたは JWT トークンとともにリフレッシュ トークンである文字列も受信する場合は、このオプションを有効にできます。これにより、ユーザーは以前に付与されたのと同じリソースにアクセスできるようになります。新しいトークンが作成されると、ユーザーは元の付与を超えてアクセスできなくなります。リフレッシュ トークンを使用すると、認可サーバーはアクセス トークンに短い期間 (有効期間) を使用でき、トークンの有効期限についてユーザーを関与させる必要はありません。このトークンを使用すると、セキュリティを強化するためにすぐに有効期限が切れるアクセス トークン/JWT トークンを再生成できます。
2. トークンの取り消し -
このオプションを有効にすると、既存のアクセス トークン/JWT トークンを取り消して無効にすることができるため、特定のトークンを WP REST API の認証に使用できなくなります。 RESTful API は、最初にアプリケーションの資格情報を検証し、取り消し要求を行ったアプリケーションに対してトークンが発行されたかどうかを検証します。 検証が成功しなかった場合、特定のリクエストは拒否され、アプリケーションにエラーが表示されます。 API はトークンを無効にし、失効後はトークンを再度使用することはできません。 失効リクエストごとに、同じ種類の認可付与に対して発行されたトークンが無効になります。
プログラミング言語のコードサンプル
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.AddHeader ("app-name", "TheAppName");
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)
.addHeader("app-name", "TheAppName")
.build();
Response response client.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,
"headers": {"app-name": "TheAppName"}
"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_HTTPHEADER => array( 'app-name: TheAppName' )
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),
'app-name': 'TheAppName'
}
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.AddHeader ("app-name", "TheAppName");
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)
.addHeader("app-name", "TheAppName")
.build();
Response response client.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,
"headers": {"app-name": "TheAppName"}
"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_HTTPHEADER => array( 'app-name: TheAppName' )
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),
'app-name': 'TheAppName'
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.AddHeader ("app-name", "TheAppName");
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)
.addHeader("app-name", "TheAppName")
.build();
Response response client.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,
"headers": {"app-name": "TheAppName"}
"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_HTTPHEADER => array( 'app-name: TheAppName' )
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),
'app-name': 'TheAppName'
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 >");
request.AddHeader = ("app-name", "TheAppName");
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 >");
.addHeader = ("app-name", "TheAppName");
.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 < access_token / id_token >",
"app-name": "TheAppName"
},
};
$.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 >',
'app-name: TheAppName'
);
));
$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 >',
'app-name': 'TheAppName',
}
conn.request ("GET", "/wp-json/wp/v2/posts ", payload, headers)
res = conn.getresponse()
data = res.read()
print (data.decode("utf-8"))
郵便配達員のサンプル:
a) OAuth 2.0 パスワード付与方式:
トークンを取得するためのサンプルリクエスト:
郵便配達員リクエストのサンプルは次からダウンロードできます。
こちら .
今抽出する zipファイル 抽出した json ファイルを postman アプリケーションにインポートします。
例
最後の手順で取得したトークンを使用してリソースを要求するサンプルの要求形式。
郵便配達員リクエストのサンプルは次からダウンロードできます。
こちら .
次に、zip ファイルを抽出し、抽出した json ファイルを postman アプリケーションにインポートします。
例
b) OAuth 2.0 クライアント認証情報の付与方法:
トークンを取得するためのサンプルリクエスト:
郵便配達員リクエストのサンプルは次からダウンロードできます。
こちら .
次に、zip ファイルを抽出し、抽出した json ファイルを postman アプリケーションにインポートします。
例
c) 実際のリソースを取得するための REST API リクエスト:
郵便配達員リクエストのサンプルは次からダウンロードできます。
こちら .
次に、zip ファイルを抽出し、抽出した json ファイルを postman アプリケーションにインポートします。
例
機能説明
1. ロールベースの REST API の制限:
この機能を使用すると、ユーザー ロールに応じて REST API アクセスを制限できます。REST API を介して要求されたリソースへのアクセスが許可されるロールを指定することができます。その結果、ユーザーが REST API 要求を行うと、そのロールがチェックされ、そのロールがホワイトリストに含まれている場合にのみリソースへのアクセスが許可されます。
それを構成する方法は?
まず、プラグインの「詳細設定」タブに移動します。
次に、「ロールベースの制限」セクションでは、デフォルトですべてのロールに API へのアクセスが許可されます。アクセスを制限するロールのチェックボックスを有効にすることができます。
上記のスクリーンショットでは、サブスクライバー ロールのチェックボックスが有効になっています。そのため、サブスクライバー ロールを持つユーザーが API リクエストを行うと、そのユーザーは要求されたリソースにアクセスできなくなります。
Note:
ロールベースの制限機能は、Basic 認証 (ユーザー名: パスワード)、JWT 方式、OAuth 2.0 (パスワード付与) に有効です。
2. カスタムヘッダー:
この機能では、デフォルトの「Authorization」ヘッダーではなくカスタム ヘッダーを選択するオプションが提供されます。
ヘッダーに「カスタム名」の名前を付けるとセキュリティが強化され、誰かが「Authorization」というヘッダーを使用して REST API リクエストを行った場合、そのユーザーは API にアクセスできなくなります。
それを構成する方法は?
まず、プラグインの「詳細設定」タブに移動します。
次に、「カスタム ヘッダー」セクションでテキスト ボックスを編集して、必要なカスタム名を入力できます。
3. REST API を除外します。
この機能を使用すると、REST API をホワイトリストに登録して、認証なしで直接アクセスできるようになります。したがって、ホワイトリストに登録されたすべての REST API は公開されます。
それを構成する方法は?
まず、プラグインの「詳細設定」タブに移動します。
次に、「REST API を除外」で、パブリック アクセス用にホワイトリストに登録する必要がある規定の形式で API を入力できます。
例: REST API ' ' を除外したい場合「/wp-json/wp/v2/posts」の場合は、テキストボックスに「/wp/v2/posts」と入力する必要があります。
4. HMAC を使用してトークンの高度な暗号化を有効にします。
この機能は、時間ベースのトークンを使用して WordPress REST API エンドポイントを認証する JWT および OAuth 2.0 メソッドに適用できます。この機能を使用すると、トークンの有効期限をカスタム設定して、トークンの有効期限が切れるとトークンが無効になるようにすることができます。
まず、プラグインの「詳細設定」タブに移動します。
次に、「トークン有効期限設定」セクションで、アクセス トークンの有効期間とリフレッシュ トークン (OAuth 2.0 メソッドで使用) を変更できます。デフォルトでは、アクセス トークンの有効期限は 60 分に設定され、リフレッシュ トークンの有効期限は 14 日に設定されています。したがって、この機能を使用すると、要件に応じて有効期限を調整できます。
関連記事
プラグインのデモをリクエストする
お困りですか?
メールでお問い合わせください apisupport@xecurify.com お客様の要件に関する迅速なガイダンス(電子メール/会議経由)が必要です。当社のチームは、お客様の要件に応じて最適なソリューション/プランの選択をお手伝いします。