WordPress向けREST API OAuth 2.0認証方式
概要
OAuth 2.0は、 WordPress の REST API エンドポイントへのアクセスを保護するための最も広く使用されている方法の 1 つです。従来の方法とは異なり、OAuth 2.0では、ユーザーのメールアドレスやパスワードを外部アプリケーションに公開することなく認証を行うことができます。この認証フローでは、OAuth 2.0 プロトコルを使用して安全なアクセス トークンまたはID トークン (JWT トークン)を生成し、これを使用してすべての API リクエストを認証します。WordPressの REST API エンドポイントにリクエストが行われるたびに、API はBearer トークンを検証して、要求されたリソースにアクセスできるかどうかを判断します。OAuth 2.0を介して発行されるトークンは高度に暗号化され、安全であるため、機密データが保護されます。JWT認証と似ていますが、OAuth 2.0 はセキュリティが強化され、追加のメリットがあるため、 WordPress の REST API エンドポイントを保護するための推奨される方法となっています。
WordPress用REST API認証プラグインは、WordPressのREST APIへの不正アクセスからセキュリティを提供します。このプラグインは、基本認証、APIキー認証、OAuth 2.0認証、JWT認証など、複数の認証方法に対応しています。
詳細を見る
要件: ダウンロードとインストール
- WordPress インスタンスに管理者としてログインします。
-
WordPress に移動します ダッシュボード → プラグイン をクリックします。入力したコードが正しければ、MFAの設定は正常に完了します 新規追加.
-
を検索 RESTAPI認証 WordPressのプラグインをクリックして
今すぐインストール.
- インストールしたら、をクリックします アクティブにしましょう.
ユースケース:WordPressでOAuth 2.0認証方式を使用してREST APIを保護する方法
1. パスワードの付与:
REST API 経由で外部プラットフォーム上の WordPress ユーザーを安全に登録または認証するにはどうすればよいですか?
- アプリケーションにログインフォームがあり、そのフォームを使用してユーザーを認証したい場合は、 WordPressの認証情報、 OAuth2.0認証 REST API メソッドを使用すると、これを実現できます。
- このプラグインは WordPress用ログインAPI、あなたは WordPress 認証情報 ユーザーをこのAPIに認証します。検証に基づいて、認証結果とユーザーのアクセスを確認する応答が返されます。
- 加えて、 OAuth2.0認証 REST API メソッドでは、WordPress で新しいユーザーを登録するためにも使用できます。 管理者の資格情報プラグインの OAuth 2.0 トークンエンドポイント、送信することができます
WordPress管理者の資格情報 管理者権限を持つトークンを生成します。
- このトークンは、次のような特権操作を実行するために使用できます。 ユーザー登録生成されたトークンは、 WordPress /users REST APIエンドポイント 機密性の高いログイン情報を公開することなく、WordPressにユーザーを安全に登録する。
2. クライアントの認証情報:
WordPressのREST APIエンドポイントを安全に認証または保護し、管理者ユーザーの認証情報を使用せずにユーザーを登録するにはどうすればよいですか?
- アクセスしたい場合 WordPress用REST API 共有せずに WordPressユーザー資格情報または、WordPress でユーザーを安全に登録したい場合 管理者ユーザーの資格情報 クライアント認証情報メソッド 完璧な解決策です。
- 機密性の高いログイン情報を公開する代わりに、 クライアントの資格情報 プラグインによって提供されるため、認証情報が漏洩するリスクはありません。
- このプラグインは、 OAuth 2.0 アイデンティティプロバイダ(サーバー) 安全なトークンを発行し、 REST API認証子 それらを検証するため。
- 取得するとトークンは認証できる WordPress 用の REST API エンドポイント安全で信頼性の高いアクセスを確保します。
-
フロー図は既に含まれておらず、実装は2つのユースケースを通して既に説明されているため、このフロー実装を追加する必要はありません。
1. プラグイン用のトークンを取得するために、適切なパラメータを指定してREST APIリクエストが送信されます。当プラグインはOAuth 2.0 IDプロバイダーとして機能し、アクセストークンを提供します。
2. リソースにアクセスするための実際のREST APIリクエストは、前のステップで取得したアクセストークンをAuthorizationヘッダーにトークンタイプ「Bearer」として渡して行われます。プラグインは認証器として機能し、トークンの有効性に基づいてAPIを認証します。トークンの検証が成功した場合、APIリクエスト元はリソースへのアクセスが許可されますが、検証に失敗した場合はエラーレスポンスが返されます。
関連する使用例:
- WordPressのREST APIを使用してユーザーをログインまたは登録するにはどうすればよいですか?
- API を使用して WordPress ユーザーを認証するにはどうすればよいですか?
次の REST API 認証方法の使用例をお読みください。
WordPressでパスワードグラントを使用してREST API OAuth 2.0を設定する方法は?
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認証 方法として。
-
選択する OAuth 2.0 付与タイプ as クライアント資格情報の付与.
-
詳しくはこちら 構成の保存 メソッドを有効にします。
-
保存すると、 顧客ID, クライアントシークレット, トークンエンドポイント.
-
次に、2つのAPI呼び出しを行います。1つはトークンを取得するため、もう1つはそのトークンを使用してWordPressでREST APIリクエストを認証するためです。
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 の場合は、クライアント資格情報の付与を使用します。
チェックアウトします
開発者のドキュメント
をご覧ください。
追加のセキュリティ機能
OAuth 2.0方式は、追加のセキュリティ機能を提供し、トークンをより詳細に制御できるため、WordPressウェブサイト全体のセキュリティが向上します。
1. リフレッシュトークン -
アクセストークンまたはJWTトークンとともにリフレッシュトークンを受け取るには、リフレッシュトークンオプションを有効にしてください。
ユーザーは再度ログインすることなく、同じリソースに引き続きアクセスできます。
リフレッシュトークンを使用すると、セキュリティ向上のために有効期限の短いアクセストークンを発行できます。
アクセストークンの有効期限が切れると、リフレッシュトークンによって新しいトークンが安全に生成されます。
2. トークンの取り消し -
既存のアクセストークンまたはJWTトークンを無効にするには、 「トークンの取り消し」オプションを有効にします。
一度失効したトークンは、WordPress の REST API の認証には使用できません。
REST APIはまずアプリの認証情報を検証し、トークンがリクエスト元のアプリに属しているかどうかを確認します。
検証に合格するとトークンは無効になり、検証に失敗するとエラーが返されます。
プログラミング言語のコードサンプル
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.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 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,
"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 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,
"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.AlwaysMultipartFormDatatrue;
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 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,
"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 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 >",
"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ファイル に
郵便配達員アプリケーション.
- 例:
-
前の手順で取得したトークンを使用してリソースを要求するためのリクエスト形式のサンプル。
-
郵便配達員リクエストのサンプルは次からダウンロードできます。
こちら.
-
今抽出する zipファイル 抽出した jsonファイル に 郵便配達員アプリケーション.
- 例:
b) OAuth 2.0 クライアント認証情報の付与方法:
- トークンを取得するためのサンプルリクエスト:
-
郵便配達員リクエストのサンプルは次からダウンロードできます。
こちら.
-
今抽出する zipファイル 抽出した jsonファイル に 郵便配達員アプリケーション.
- 例:
c) 実際のリソースを取得するための REST API リクエスト:
-
郵便配達員リクエストのサンプルは次からダウンロードできます。
こちら.
-
今抽出する zipファイル 抽出した jsonファイル に 郵便配達員アプリケーション.
- 例:
機能説明
1. ロールベースの REST API の制限:
この機能は、ユーザーの役割に基づいてWordPressのREST APIへのアクセスを制限します。特定のREST APIリソースへのアクセスを許可する役割を、許可リストに登録できます。REST APIリクエストが行われると、ユーザーの役割がチェックされ、許可リストに登録されている役割の場合にのみアクセスが許可されます。
WordPress でロールベースの REST API 制限を構成する方法は?
- プラグインへ移動 詳細設定 タブには何も表示されないことに注意してください。
-
役割ベースの制限 セクションでは、すべてのロールがデフォルトで API にアクセスできるようになります。
-
API へのアクセスを制限するロールの横にあるチェックボックスを有効にします。
-
上記のスクリーンショットでは、購読者ロールのチェックボックスが有効になっています。そのため、購読者ロールを持つユーザーがAPIリクエストを行った場合、そのユーザーはリクエストされたリソースにアクセスできません。
注:ロールベースの制限機能は、基本認証(ユーザー名:パスワード)、JWT方式、およびOAuth 2.0(パスワードグラント)で有効です。
2. カスタムヘッダー:
カスタムヘッダー機能を使用すると、デフォルトの「Authorization」ヘッダーの代わりにカスタムヘッダーを使用できます。
これにより、セキュリティがさらに強化されます。REST APIは、定義済みのカスタムヘッダー名を持つリクエストのみを受け付けるためです。デフォルトの「Authorization」ヘッダーを使用してリクエストを送信しようとすると、アクセスは拒否されます。
WordPressのREST API認証でカスタムヘッダーを設定する方法は?
- プラグインへ移動 詳細設定 タブには何も表示されないことに注意してください。
-
カスタムヘッダー セクションで、テキストボックスに希望するヘッダー名を入力します。
-
変更を保存します API リクエストに新しいカスタム ヘッダーを適用します。
3. REST API を除外します。
「REST API の除外」機能を使用すると、特定のREST API エンドポイントを認証なしでアクセスできるように設定できます。除外された API は公開され、トークンやログインを必要とせずにアクセスできるようになります。
JWT 認証で除外される REST API を構成するにはどうすればよいでしょうか?
- プラグインへ移動 詳細設定 タブには何も表示されないことに注意してください。
-
REST APIを除外する セクションで、必要な形式で API エンドポイントを入力します。
-
入力された API は認証から除外され、パブリックアクセスが可能になります。
-
例: REST API ' ' を除外したい場合/wp-json/wp/v2/posts' の場合、テキストボックスに '/wp/v2/posts' と入力する必要があります。
4. HMAC を使用してトークンの高度な暗号化を有効にします。
この機能は、基本認証方式で利用できます。デフォルトでは、トークンはBase64エンコードを使用して暗号化されますが、詳細オプションを使用すると、トークンにHMAC暗号化を有効にできます。HMACははるかに高いレベルのセキュリティを提供し、APIリクエストが改ざんや不正アクセスから強力に保護されることを保証します。
WordPress 基本認証でトークンの HMAC 暗号化を構成するにはどうすればよいでしょうか?
- プラグインへ移動 詳細設定 タブをクリックして開きます トークン暗号化方式 のセクションから無料でダウンロードできます。
-
選択 HMAC Base64をタップし、その後、 変更内容を保存 すべてのトークンに安全な暗号化を適用します。
関連記事
プラグインのデモをリクエストする