の検索結果 :

×

登録する お問い合わせ

基本認証を使用した WordPress REST API のセキュリティ保護ガイド

REST APIのWordPress基本認証は、WordPressエンドポイントへのアクセスを安全に保つ方法を提供します。ユーザー名とパスワードまたはクライアント資格情報から生成されたトークンを使用して、API リクエストを検証します。この認証方法は、Web サービスと対話するときに ID を検証し、承認されたユーザーのみが API にアクセスできるようにします。



WordPress REST APIを使用する場合、サイトと安全にやり取りするためにBasic認証を使用する必要があるかもしれません。Basic認証は、HTTPプロトコルに組み込まれたシンプルな認証スキームです。各リクエストでbase64でエンコードされた認証情報(ユーザー名/メールアドレスとパスワード)を送信します。


WordPress REST API 認証

WordPress REST API 認証プラグインは、WordPress REST API への不正アクセスからセキュリティを提供します。このプラグインは、基本認証、API キー認証、OAuth 2.0 認証、JWT 認証など、複数の認証方法を提供します。

詳細を見る   


WP API Basic Auth を使い始めるには、WordPress REST API 認証プラグインをインストールする必要があります。このプラグインにより、REST API が Basic 認証資格情報を受け入れるようになります。手順は次のとおりです。


  • WordPress REST API 認証プラグインをインストールします。 WordPress プラグイン リポジトリから miniOrange の WordPress REST API 認証プラグインを検索してインストールします。このプラグインにより、サイトで REST API 基本認証が有効になります。
  • プラグインをアクティブ化します。 インストール後、WordPress ダッシュボードからプラグインを有効にします。
  • 認証を構成する: 基本認証を設定するには、以下の手順に従ってください。


1. WordPress REST API との安全なやり取りにユーザー名とパスワードを使用する


ユーザーが独自のフィードやブログを投稿できる Android または iOS アプリを開発している場合、WordPress との安全で認証されたやり取りを確保することが重要です。

ユーザー認証を安全に管理する方法は次のとおりです。

  • WordPress 基本認証を使用する: ユーザーのユーザー名とパスワードを使用して WordPress 基本認証 REST API を実装します。この方法により、アプリを通じて行われたリクエストが安全に認証されることが保証されます。
  • ユーザーリクエストを認証する: ユーザーがアプリにログインすると、セッションが作成されます。ユーザーの資格情報は、Basic Authorization ヘッダー内で暗号化された形式で送信されます。
  • 権限の管理: REST API は、ユーザーの WordPress 権限に基づいて、ユーザーが実行できるアクションとアクセスできるコンテンツを決定します。これにより、ユーザーの機能を制御し、WordPress サイトとの安全なやり取りを維持できます。

ユーザー資格情報を使用した WordPress 基本認証を使用すると、各ユーザーのアクションが適切に認証および承認され、ユーザーが生成したコンテンツに安全な環境を提供できます。


ユーザー認証情報を使用した WordPress REST API の基本認証方法

2. WordPress REST API との安全なやり取りにクライアント認証情報を使用する


Android または iOS アプリがあり、REST API を介して WordPress コンテンツとやり取りする必要がある場合は、サイトを不正アクセスから保護することが不可欠です。リスクを伴う可能性がある WordPress ユーザー認証情報を直接使用する代わりに、クライアント認証情報を使用した WordPress 基本認証を選択する必要があります。

クライアント資格情報を安全に使用する方法は次のとおりです。

  • クライアントIDとクライアントシークレットを取得します。 WordPress ユーザーの資格情報を公開する代わりに、アプリのクライアント ID とクライアント シークレットを生成します。
  • 安全なリクエストを送信: API リクエストを行うときは、クライアント ID とクライアント シークレットを含めます。これらの資格情報は、Basic Authorization ヘッダー内で暗号化された形式で送信されます。
  • 検証とアクセス: WordPress REST API はリクエストを受信すると、資格情報を検証します。検証が成功すると、サイトのセキュリティを維持しながら、必要な API エンドポイントにアクセスできるようになります。

クライアント資格情報を使用すると、アプリが WordPress サイトと効率的にやり取りできるようにしながら、WordPress ユーザー情報が保護された状態を維持できます。


クライアント認証情報を使用した WordPress REST API の基本認証方法

REST API での基本認証の使用: ユーザー名とパスワード


  • プラグインで、に移動します メソッドの構成 左側のセクションのタブ。
  • ソフトウェアの制限をクリック 基本認証 API 認証方法として。
  • ユーザー名とパスワードを使用した WordPress REST API の基本認証方法
  • 選択 Base64エンコーディングによるユーザー名とパスワード をクリックし 次へ 右上隅にあります。
  • ユーザー名とパスワードを使用した WordPress REST API の基本認証方法
  • 機能をテストするには、既存のユーザーのユーザー名とパスワードのフィールドに入力します。
  • ユーザー名とパスワードを使用した WordPress REST API の基本認証方法
  • REST API エンドポイントを編集して、そのエンドポイントから詳細を取得できます。例: ここでは /pages エンドポイントが選択されています。
  • セットアップボタンをクリックすると、セットアップが開始されます テスト構成 ボタンを押して、画面に表示される結果を確認します。
  • クリック 終了
  • ユーザー名とパスワードを使用した WordPress REST API の基本認証方法

クライアント ID とクライアント シークレットを使用した REST API 基本認証:


  • プラグインで、次の場所に移動します。 API認証の構成 タブをクリックして 基本認証 API 認証方法として。
  • ここで、 クライアント ID: クライアント シークレット 基本認証キー タイプとして、ユーザー資格情報をエンコードする方法に応じて、利用可能な暗号化方法のいずれかを選択します。HMAC は最も安全であり、推奨される方法です。
  • 最後に、をクリックします 構成の保存 WordPress REST API 認証の基本認証が有効になります。
  • client-id と client-secret を使用した WordPress REST API Basic 認証方法
  • REST API 基本認証設定を保存した後、WordPress REST API にアクセスするには、それぞれの認証キーを使用して 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" 
    
  • PHP の Base64_encode(string) 関数は、base64 エンコード用に次のように使用できます。
  •         
     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==
  • チェックアウトします エラー応答 クライアント ID とクライアント シークレットを使用した基本認証。
  • チェックアウトします 開発者のドキュメント のガイドをご参照ください。


 
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 リクエストを作成するには、次の手順に従います。

  • セットアップボタンをクリックすると、セットアップが開始されます 郵便配達員のサンプル プラグインのタブ。
  • WordPress REST API Basic認証方式ポストマン実装
  • 次に、Basic Authentication Postman Samples カードの上にマウスを置きます。
      • WordPress REST API 基本認証方式 postman ユーザー名:パスワードの JSON ファイル
      • ダウンロードしたものをインポートする JSONファイル 以下に示すように、Postman アプリケーションに入力します。
      • WordPress REST API Basic認証方式 postman import JSONファイル
      • jsonファイルをインポートしたら、最後の図に示すように、コレクションの下のREST APIリクエストをクリックします。 Wordpress ドメインを使用して、 http://<wp_base_url>/wp-json/wp/v2/posts そして、 Base64エンコード ヘッダーにはベースエンコードされた値が含まれます。
        • 例:
          ユーザー名: testuser、パスワード: password@123 の場合、base64 でエンコードされた値は 'dGVzdHVzZXI6cGFzc3dvcmRAMTIz' になります。

      WordPress REST API 認証キーメソッド postman replace ベース URL
      • WordPress REST API 基本認証方式 postman クライアント ID とクライアント シークレットの JSON ファイル
      • ダウンロードしたものをインポートする JSONファイル 以下に示すように、Postman アプリケーションに入力します。
      • WordPress REST API Basic認証方式 postman import JSONファイル
      • jsonファイルをインポートしたら、最後の図に示すように、コレクションの下のREST APIリクエストをクリックします。 Wordpress ドメインを使用して、 http://<wp_base_url>/wp-json/wp/v2/posts そして、 Base64エンコード ヘッダーにはベースエンコードされた値が含まれます。
      • WordPress REST API 基本認証方式 postman replace ベース URL


1. ロールベースの REST API の制限:


この機能を使用すると、ユーザー ロールに応じて REST API アクセスを制限できます。REST API を介して要求されたリソースへのアクセスが許可されるロールを指定することができます。その結果、ユーザーが REST API 要求を行うと、そのロールがチェックされ、そのロールがホワイトリストに含まれている場合にのみリソースへのアクセスが許可されます。


それを構成する方法は?

  • まず、プラグインに移動します '高度な設定' タブには何も表示されないことに注意してください。
  • そして、 役割ベースの制限 セクションでは、デフォルトですべてのロールが API にアクセスできるようになります。アクセスを制限するロールのチェックボックスを有効にすることができます。
  • WordPress REST API Basic認証方式ポストマン実装
  • 上記の画像では、サブスクライバー ロールのチェックボックスが有効になっています。そのため、サブスクライバー ロールを持つユーザーが API リクエストを行うたびに、そのユーザーは要求されたリソースにアクセスできなくなります。

ご注意: ロールベースの制限機能は、Basic 認証 (ユーザー名: パスワード)、JWT 方式、OAuth 2.0 (パスワード付与) に有効です。


2. カスタムヘッダー:


この機能は、デフォルトのヘッダーの代わりにパーソナライズされたヘッダーを選択する機能を提供します。 「認可」 ヘッダー。これにより、カスタム設定に従ってヘッダーに名前を付けることができるため、セキュリティが強化されます。したがって、誰かがヘッダー名を付けたREST APIリクエストを送信しようとした場合、 「認可、' API へのアクセスが許可されます。


それを構成する方法は?

  • まず、プラグインに移動します '高度な設定' タブには何も表示されないことに注意してください。
  • その後、 「カスタムヘッダー」 セクションでは、テキスト ボックスを編集して、必要なカスタム名を入力できます。
  • WordPress REST API Basic認証方式ポストマン実装

3. REST API を除外します。


この機能を使用すると、特定の REST API をホワイトリストとして指定し、認証を必要とせずに直接アクセスできるようになります。その結果、ホワイトリストに登録されたすべての REST API がパブリックにアクセス可能になります。


それを構成する方法は?

  • まず、プラグインに移動します '高度な設定' タブには何も表示されないことに注意してください。
  • その後、 「REST APIを除外する」、パブリックアクセスのためにホワイトリストに登録する必要がある規定の形式で API を入力できます。
  • WordPress REST API Basic認証方式ポストマン実装
  • 例: REST API を除外するとします。「/wp-json/wp/v2/posts」の場合は、テキストボックスに「/wp/v2/posts」と入力する必要があります。

4. HMAC を使用してトークンの高度な暗号化を有効にします。


この機能は基本認証方式で提供されており、トークンは通常、デフォルトで Base64 エンコードを使用して暗号化されます。ただし、詳細オプションを使用すると、非常に安全な HMAC 暗号化方式を使用してトークンを暗号化できるため、非常に高いレベルのセキュリティが保証されます。

    1. ロールベースの REST API の制限:

    この機能を使用すると、ユーザー ロールに応じて REST API アクセスを制限できます。REST API を介して要求されたリソースへのアクセスが許可されるロールを指定することができます。その結果、ユーザーが REST API 要求を行うと、そのロールがチェックされ、そのロールがホワイトリストに含まれている場合にのみリソースへのアクセスが許可されます。


    それを構成する方法は?

    • まず、プラグインに移動します '高度な設定' タブには何も表示されないことに注意してください。
    • そして、 役割ベースの制限 セクションでは、デフォルトですべてのロールが API にアクセスできるようになります。アクセスを制限するロールのチェックボックスを有効にすることができます。
    • WordPress REST API Basic認証方式ポストマン実装
    • 上記の画像では、サブスクライバー ロールのチェックボックスが有効になっています。そのため、サブスクライバー ロールを持つユーザーが API リクエストを行うたびに、そのユーザーは要求されたリソースにアクセスできなくなります。

    ご注意: ロールベースの制限機能は、Basic 認証 (ユーザー名: パスワード)、JWT 方式、OAuth 2.0 (パスワード付与) に有効です。


    2. カスタムヘッダー:

    この機能は、デフォルトのヘッダーの代わりにパーソナライズされたヘッダーを選択する機能を提供します。 「認可」 ヘッダー。これにより、カスタム設定に従ってヘッダーに名前を付けることができるため、セキュリティが強化されます。したがって、誰かがヘッダー名を付けたREST APIリクエストを送信しようとした場合、 「認可、' API へのアクセスが許可されます。


    それを構成する方法は?

    • まず、プラグインに移動します '高度な設定' タブには何も表示されないことに注意してください。
    • その後、 「カスタムヘッダー」 セクションでは、テキスト ボックスを編集して、必要なカスタム名を入力できます。
    • WordPress REST API Basic認証方式ポストマン実装

    3. REST API を除外します。

    この機能を使用すると、特定の REST API をホワイトリストとして指定し、認証を必要とせずに直接アクセスできるようになります。その結果、ホワイトリストに登録されたすべての REST API がパブリックにアクセス可能になります。


    それを構成する方法は?

    • まず、プラグインに移動します '高度な設定' タブには何も表示されないことに注意してください。
    • その後、 「REST APIを除外する」、パブリックアクセスのためにホワイトリストに登録する必要がある規定の形式で API を入力できます。
    • WordPress REST API Basic認証方式ポストマン実装
    • 例: REST API を除外するとします。「/wp-json/wp/v2/posts」の場合は、テキストボックスに「/wp/v2/posts」と入力する必要があります。

    4. HMAC を使用してトークンの高度な暗号化を有効にします。

    この機能は基本認証方式で提供されており、トークンは通常、デフォルトで Base64 エンコードを使用して暗号化されます。ただし、詳細オプションを使用すると、非常に安全な HMAC 暗号化方式を使用してトークンを暗号化できるため、非常に高いレベルのセキュリティが保証されます。


    ユーザー認証情報を使用した WordPress REST API の基本認証方法



フル機能のトライアル版を入手



 ご返信ありがとうございます。すぐにご返信させていただきます。

何か問題が発生しました。 もう一度質問を送信してください

外部/サードパーティ REST API エンドポイントを統合する

お困りですか?

メールでお問い合わせください apisupport@xecurify.com お客様のご要望について迅速なガイダンス(電子メール/会議経由)をご提供し、当社のチームがお客様のご要望に応じて最適なソリューション/プランの選択をお手伝いします。


ADFS_sso ×
こんにちは!

助けが必要? 私たちはここにいます!

サポート