の検索結果 :

×

登録する お問い合わせ

WordPress REST API JWT 認証方法

この WordPress REST API エンドポイント認証方法では、JWT (JSON Web Token) に基づく検証で REST API アクセスを行います。WordPress REST API エンドポイントへのアクセス要求が行われるたびに、その JWT トークンに対して認証が行われ、その JWT トークンの検証に基づいて、その API 要求のリソースへのアクセスが許可されます。JWT トークンは WordPress ユーザーの資格情報に基づいて生成され、高度に暗号化されているため、セキュリティが侵害されることはありません。



WordPress REST API 認証

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

詳細を見る   

  • WordPress インスタンスに管理者としてログインします。
  • WordPress に移動します ダッシュボード -> プラグイン をクリックします。入力したコードが正しければ、MFAの設定は正常に完了します 新規追加.
  • WordPress を検索する RESTAPI認証 プラグインを選択してクリックします 今すぐインストール.
  • インストールしたら、をクリックします アクティブにしましょう.


  • モバイル/Web アプリケーションがあり、ユーザー機能に基づいて WordPress REST API エンドポイントへのアクセスを許可し、特定の機能を持つユーザーのみが作成/更新操作を実行でき、他のロールのユーザーはそれを表示することしかできないようにするとします。このような場合、ユーザー資格情報に従って取得された JWT (JSON Web トークン) を使用して REST API エンドポイントを認証できます。WordPress JWT 認証を使用すると、これを非常に安全に行うことができます。したがって、この JWT を Authorization ヘッダーに渡して REST API リクエストを行うと、リソース/データにアクセスしたり、特定のユーザー機能を必要とする WordPress 操作を実行する機能/承認を提供したりできます。WordPress REST API の JWT 認証では、HSA または RSA の 2 つの方法を使用してトークンを暗号化し、限られた時間のみ有効です。したがって、セキュリティは問題になりません。


    JWT 認証用に生成された JWT トークンは WordPress ユーザー情報で構成されているため、このトークンは別のアプリケーションの有効な秘密鍵/公開証明書を使用してデコードし、そこでユーザーを作成したり、更新されたユーザー情報を同期したりできます。JWT トークンは時間ベースのトークンでもあるため、要件に応じて設定できる一定の期間が経過すると期限切れになります。期限が切れると、API はアクセスできなくなり、ユーザー情報もデコードできなくなります。そのため、WordPress REST API の JWT 認証は安全な認証方法になります。


  • JWT メソッドを使用して実現できる WordPress REST API 認証のフローを以下に説明します。
  • WordPress REST API JWT jwtを利用した認証方法

    1. WordPress REST API リクエストは、JWT トークンを取得するために必要なすべてのパラメータを使用して行われます。取得された JWT トークンは、HSA または RSA アルゴリズムを使用して暗号化された形式で提供されるため、最大限のセキュリティが確保されます。

    2. 次に、リソース/データにアクセスしたり、WordPress データベースで操作を実行したりするための実際の WordPress REST API リクエストが、最後の手順で取得した JWT トークンを使用して作成され、トークン タイプが Bearer として Authorization ヘッダーに渡されます。プラグインはその JWT トークンを検証し、検証または認証が成功した場合は、API 要求者にリソースが提供され、そうでない場合はエラー応答が返されます。したがって、プラグインは JWT トークン プロバイダーと JWT トークン バリデーターの両方として機能します。



関連する使用例:

  • WordPress REST API エンドポイントに対して JWT 認証されたリクエストを行うにはどうすればよいですか?
  • JWT (JSON Web Token) を使用した Woocommerce/WordPress REST API の認証。



  • プラグインで、に移動します メソッドの構成 左側のセクションのタブ。
  • ソフトウェアの制限をクリック JWT認証 API 認証方法として。
  • WordPress REST API jwt 認証方法
  • 現在地に最も近い トークン生成タイプ 。 デフォルトでは、 HS256 アルゴリズムとランダムに生成された一意の秘密鍵がそれぞれ使用され、クリックします 次へ 右上隅にあります。
  • 機能をテストするには、次のように入力します。 および パスワード 既存のユーザーのフィールド。
  • WordPress REST API jwt 認証方法
  • ソフトウェアの制限をクリック トークンのフェッチ 応答として JWT トークン (jwt_token) が表示され、その値をクリップボードにコピーして GET リクエストを行うことができます。
  • 手順 6 で取得した JWT トークンを貼り付けます。
  • クリック テスト構成 そして応答が画面に表示されます。
  • クリック 仕上げ
  • WordPress REST API jwt 認証方法
  • プラグインで、次の場所に移動します。 API認証の構成 タブをクリックして JWT認証 API 認証方法として。
  • 現在地に最も近い 署名アルゴリズム および クライアントシークレットデフォルトでは、HS256 アルゴリズムとランダムに生成された秘密キーがそれぞれ使用されます。
  • 最後に、をクリックします 構成の保存 そのため、WordPress REST API 認証の JWT 認証が有効になります。
  • WordPress REST API JWT jwtを利用した認証方法
  • ここでは、XNUMX つの API 呼び出しを行う必要があります。

  • JWT トークンを取得するには、以下のようにトークン エンドポイントに対して REST API 呼び出しを行う必要があります。
  • 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 トークンを含む成功応答が返され、そうでない場合は、それに応じてエラー応答が表示されます。

  • チェックアウトします エラー応答 JWTトークンを取得するため。
  • JWT トークンを取得したら、以下に示すように、それを使用して WordPress REST API へのアクセスをリクエストできます。
  • 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
    
  • 注: 上記のトークンはデフォルトで 1 時間有効ですが、カスタマイズすることもできます。トークンの有効期限が切れると、再度生成できます。
  • チェックアウトします 開発者のドキュメント のガイドをご参照ください。
  • チェックアウトします エラー応答 JWTトークンを使ったAPIを作成するためのものです。

おめでとうございます! 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 リクエストを作成するには、次の手順に従います。

  • セットアップボタンをクリックすると、セットアップが開始されます 郵便配達員のサンプル プラグインのタブ。
  • WordPress REST API JWT 認証方式 postman 実装
  • A JSONファイル 自動ダウンロードされます。
  • WordPress REST API JWT 認証方式 postman JSON ファイル
  • ダウンロードしたものをインポートする JSONファイル 以下に示すように、Postman アプリケーションに入力します。
    • json ファイルをインポートしたら、以下の REST API リクエストをクリックします。 コレクション 最後の図に示すように、 Wordpress ドメインを使用して、 http://<wp_base_url>/wp-json/wp/v2/posts そして、 WordPress ユーザー名と 本体パラメータに WordPress パスワードを含めます。
    • WordPress REST JWT 認証方法 postman replace ベース URL
    • WordPress REST JWT 認証方法 postman replace ベース URL の例
    • 注: レスポンスから取得した jwt トークンをコピーします。これは、リソース API リクエストで認証に使用されます。
    • json ファイルをインポートしたら、以下の REST API リクエストをクリックします。 コレクション 最後の図に示すように、 Wordpress ドメインを使用して、 http://<wp_base_url>/wp-json/wp/v2/posts そして、 トークン要求の後に取得した応答からコピーされた jwt トークンを使用します。
    • WordPress REST JWT 認証方法 postman ベース URL 実際のリソースを置き換える
    • WordPress REST API JWT 認証方法 postman replace URL 実際のリソース

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


この機能を使用すると、ユーザー ロールに基づいて REST API アクセスを制限できます。REST API の要求されたリソースへのアクセスを許可するロールをホワイトリストに登録できます。そのため、ユーザーが REST API 要求を行うたびに、そのロールが取得され、そのロールがホワイトリストに登録されている場合にのみリソースへのアクセスが許可されます。


それを構成する方法は?

  • まず、プラグインの「詳細設定」タブに移動します。
  • 次に、「ロールベースの制限」セクションでは、デフォルトですべてのロールに API へのアクセスが許可されます。アクセスを制限するロールのチェックボックスを有効にすることができます。
  • WordPress REST API Basic認証方式ポストマン実装
  • 上記のスクリーンショットでは、サブスクライバー ロールのチェックボックスが有効になっています。そのため、サブスクライバー ロールを持つユーザーが API リクエストを行うと、そのユーザーは要求されたリソースにアクセスできなくなります。

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


2. カスタムヘッダー:


この機能では、デフォルトの「Authorization」ヘッダーではなくカスタム ヘッダーを選択するオプションが提供されます。

ヘッダーに「カスタム名」の名前を付けるとセキュリティが強化され、誰かが「Authorization」というヘッダーを使用して 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. カスタムトークンの有効期限:


この機能は、時間ベースのトークンを使用して WordPress REST API エンドポイントを認証する JWT および OAuth 2.0 メソッドに適用できます。この機能を使用すると、トークンの有効期限をカスタム設定して、トークンの有効期限が切れるとトークンが無効になるようにすることができます。

  • まず、プラグインの「詳細設定」タブに移動します。
  • 次に、「トークン有効期限設定」セクションで、アクセス トークンの有効期間とリフレッシュ トークン (OAuth 2.0 メソッドで使用) を変更できます。デフォルトでは、アクセス トークンの有効期限は 60 分に設定され、リフレッシュ トークンの有効期限は 14 日に設定されています。したがって、この機能を使用すると、要件に応じて有効期限を調整できます。
  • WordPress REST API Basic認証方式ポストマン実装

5. JWTベースのトークンの署名検証:


この機能により、JWT トークンの JWT 署名の安全な署名が可能になり、JWT トークンのセキュリティがさらに強化され、署名はクライアント シークレット/証明書を使用してのみデコードできるようになります。つまり、署名は非公開であり、他の人には見えません。

WordPress REST API Basic認証方式ポストマン実装

当社は HS2 と RS256 の 256 つの署名アルゴリズムをサポートしています。したがって、上記の画像に示すように、ドロップダウンから任意の署名アルゴリズムを選択できます。

また、JWT の署名に使用されるクライアント シークレットまたは証明書を追加する必要があります。




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



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

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

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

お困りですか?

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


ADFS_sso ×
こんにちは!

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

サポート