の検索結果 :

×

会員登録 お問い合わせ

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

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



WordPressのBasic Authプラグインは、Basic認証を使用してREST APIのセキュリティを確保します。この方法では、すべてのAPIリクエストで認証情報(ユーザー名またはメールアドレスとパスワード)がbase64でエンコードされ、WordPressサイトと外部アプリケーション間の安全な通信が確保されます。


WordPress REST API 認証

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

詳細を見る   


WP API Basic Authを設定するには、 WordPress REST API 認証プラグインこのプラグインにより、WordPress REST API は安全なアクセスのために基本認証資格情報を受け入れることができるようになります。


ステップバイステップガイド:


  • ステップ1: プラグインをインストールする - WordPressプラグインリポジトリで「REST API Authentication for WP」を検索してインストールしてください。このプラグインは、サイトでREST API基本認証を有効にします。
  • ステップ2:プラグインを有効化する - インストールしたら、WordPress ダッシュボードから「プラグイン」→「インストール済みプラグイン」に移動し、REST API 認証プラグインの横にある「有効化」をクリックしてプラグインを有効化します。
  • ステップ3: 認証を構成する - プラグインの設定を開き、手順に従ってREST APIの基本認証を設定します。プラグインの設定ページに移動して、認証方法を設定します。


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


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

ユーザー認証を安全に管理する方法:

  • WordPress 基本認証を使用する: ユーザーのユーザー名とパスワードを使用して、WordPress Basic Authentication 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」を選択し、ユーザー認証情報の暗号化方法に応じて利用可能な暗号化方式を選択します。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 の制限:


この機能は、ユーザーロールに基づいてWordPress REST APIへのアクセスを制限します。特定のREST APIリソースへのアクセスを許可するロールをホワイトリストに登録できます。REST APIリクエストが行われると、ユーザーのロールがチェックされ、ホワイトリストに登録されている場合にのみアクセスが許可されます。


WordPress でロールベースの REST API 制限を構成する方法は?

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

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


2. カスタムヘッダー:


カスタムヘッダー機能を使用すると、デフォルトの「Authorization」ヘッダーの代わりにカスタムヘッダーを使用できます。これにより、REST APIは定義したカスタムヘッダー名を持つリクエストのみを受け入れるため、セキュリティがさらに強化されます。デフォルトの「Authorization」ヘッダーを使用してリクエストを送信しようとした場合、アクセスは拒否されます。


WordPress REST API 認証用のカスタム ヘッダーを構成するにはどうすればよいでしょうか?

  • プラグインへ移動 詳細設定 タブには何も表示されないことに注意してください。
  • カスタムヘッダー セクションで、テキストボックスに希望するヘッダー名を入力します。
  • 変更を保存して、API リクエストに新しいカスタム ヘッダーを適用します。
  • WordPress REST API Basic認証方式ポストマン実装

3. REST API を除外します。


REST APIを除外する機能を使用すると、特定のREST APIエンドポイントへの認証なしのアクセスを許可できます。除外されたAPIは公開され、トークンやログインなしでアクセスできるようになります。


JWT 認証で除外される REST API を構成するにはどうすればよいでしょうか?

  • プラグインへ移動 詳細設定 タブには何も表示されないことに注意してください。
  • REST APIを除外する セクションで、必要な形式で API エンドポイントを入力します。
  • 入力された API は認証から除外され、パブリックアクセスが可能になります。
  • WordPress REST API Basic認証方式ポストマン実装
  • 例: REST API を除外するとします。「/wp-json/wp/v2/posts」の場合は、テキストボックスに「/wp/v2/posts」と入力する必要があります。

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


この機能はBasic認証方式で利用できます。デフォルトではトークンはBase64エンコードで暗号化されますが、詳細オプションではトークンにHMAC暗号化を有効にすることができます。HMACはより高いレベルのセキュリティを提供し、APIリクエストは改ざんや不正アクセスから強固に保護されます。


WordPress 基本認証でトークンの HMAC 暗号化を構成するにはどうすればよいでしょうか?

  • プラグインへ移動 詳細設定 タブをクリックして開きます トークン暗号化方式 のセクションから無料でダウンロードできます。
  • 選択する HMAC Base64 の代わりに、変更を保存してすべてのトークンに安全な暗号化を適用します。


デフォルトでは、Basic認証はBase64エンコードを使用しますが、これは完全に安全とは言えません。しかし、当社のプラグインなどを使用することで、高度なHMAC暗号化を有効にすることができ、トークンのセキュリティを高め、本番環境での使用に適したものにすることができます。

Basic認証は、シンプルさが重視されるテスト、開発、または小規模アプリに最適です。トークンベースのセッションとスケーラビリティを必要とする大規模なアプリケーションには、JWTが推奨されます。

はい。Basic 認証は、モバイル アプリのユーザー資格情報またはクライアント資格情報と組み合わせて使用​​することで、API リクエストを安全に検証できます。

無効にすると、REST APIエンドポイントはBasic認証によるリクエストの検証を停止します。これにより、APIが不正アクセスにさらされる可能性があるため、認証は常に有効にしておくことをお勧めします。

ロールベースの制限機能を使用すると、REST API エンドポイントへのアクセスを許可または拒否する WordPress ロールを指定できます。




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



 ご返信ありがとうございます。近日中にご連絡させていただきます。

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

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

お困りですか?

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


ADFS_sso ×
こんにちは!

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

対応