の検索結果 :

×

会員登録 お問い合わせ

WordPress の基本認証を使用した安全な REST API ガイド

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



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


WordPress用REST API認証プラグイン

WordPress用REST API認証プラグインは、WordPressのREST APIへの不正アクセスからセキュリティを提供します。このプラグインは、基本認証、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 REST API に、ユーザー名とパスワードを使用した基本認証を実装してください。この方法により、アプリ経由で行われるリクエストが安全に認証されることが保証されます。
  • ユーザーリクエストを認証する: ユーザーがアプリにログインすると、セッションが作成され、ユーザーの認証情報が暗号化された形式でBasic Authorizationヘッダー内に送信されます。
  • 権限の管理: ユーザーのWordPress権限に基づいて、REST APIはユーザーが実行できる操作とアクセスできるコンテンツを決定します。これにより、ユーザーの権限を制御し、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 認証の基本認証が有効になります。
  • REST API の WordPress 用基本認証方法(クライアント ID とクライアント シークレットを使用)
  • 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 Postman実装のためのREST API基本認証方式
  • 次に、Basic Authentication Postman Samples カードの上にマウスを置きます。
      • WordPressのREST API基本認証方法(ユーザー名:パスワードのJSONファイル)
      • ダウンロードしたものをインポートする JSONファイル 以下に示すように、Postman アプリケーションに入力します。
      • WordPressのREST API基本認証方式、Postmanによる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
      • REST API の基本認証方式 WordPress Postman クライアント ID とクライアント シークレット用の JSON ファイル
      • ダウンロードしたものをインポートする JSONファイル 以下に示すように、Postman アプリケーションに入力します。
      • WordPressのREST API基本認証方式、PostmanによるJSONファイルのインポート
      • jsonファイルをインポートしたら、最後の図に示すように、コレクションの下のREST APIリクエストをクリックします。 Wordpress ドメインを使用して、 http://<wp_base_url>/wp-json/wp/v2/posts そして、 Base64エンコード ヘッダーにはベースエンコードされた値が含まれます。
      • WordPressのREST API基本認証メソッド(PostmanでベースURLを置き換える)


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


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


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

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

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


2. カスタムヘッダー:


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


WordPressのREST API認証でカスタムヘッダーを設定する方法は?

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

3. REST API を除外します。


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


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

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

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


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


WordPressの基本認証でトークンのHMAC暗号化を設定する方法は?

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


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

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

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

無効にすると、REST APIエンドポイントは基本認証によるリクエストの検証を行わなくなります。これにより、APIが不正アクセスに対して脆弱になる可能性があるため、認証は常に有効にしておくことをお勧めします。

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




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



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

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

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

お困りですか?

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


ADFS_sso ×
こんにちは!

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

対応