Результаты поиска :

×

Руководство по обеспечению безопасности REST API WordPress с помощью базовой аутентификации

Базовая аутентификация WordPress для REST API Этот метод аутентификации обеспечивает безопасность доступа к конечным точкам WordPress путем проверки запросов API с помощью токена, сгенерированного на основе имени пользователя и пароля или учетных данных клиента. Он подтверждает личность пользователя при взаимодействии с веб-сервисом, гарантируя, что доступ к REST API WordPress имеют только авторизованные пользователи.



Плагин Basic Auth в WordPress помогает защитить REST API с помощью базовой аутентификации. При этом методе каждый запрос к API отправляет учетные данные (имя пользователя или адрес электронной почты и пароль), закодированные в base64, что обеспечивает безопасную связь между вашим сайтом WordPress и внешними приложениями.


Аутентификация через REST API WordPress

Плагин аутентификации REST API для WordPress обеспечивает защиту от несанкционированного доступа к вашим REST API WordPress. Наш плагин предоставляет несколько методов аутентификации, таких как базовая аутентификация, аутентификация по ключу API, аутентификация OAuth 2.0 и аутентификация JWT.

Узнать больше   


Для настройки базовой аутентификации WP API необходимо установить... Плагин аутентификации REST API для WordPressЭтот плагин позволяет REST API WordPress принимать учетные данные базовой аутентификации для безопасного доступа.


Пошаговое руководство:


  • Шаг 1. Установите плагин — Найдите в репозитории плагинов WordPress плагин "REST API Authentication for WP" и установите его. Этот плагин включит базовую аутентификацию REST API на вашем сайте.
  • Шаг 2: Активируйте плагин — После установки активируйте плагин из панели управления WordPress, перейдя в «Плагины» → «Установленные плагины» и нажав «Активировать» рядом с плагином REST API Authentication.
  • Шаг 3: Настройка аутентификации — Откройте настройки плагина и выполните действия по настройке базовой аутентификации для вашего REST API. Перейдите на страницу конфигурации плагина, чтобы настроить метод аутентификации.


1. Использование имени пользователя и пароля для безопасного взаимодействия с REST API WordPress.


Если вы разрабатываете приложение для Android или iOS, позволяющее пользователям публиковать собственные ленты новостей или записи в блоге, обеспечение безопасного и аутентифицированного взаимодействия с REST API WordPress имеет решающее значение.

Как безопасно управлять аутентификацией пользователей:

  • Используйте базовую аутентификацию WordPress: Реализуйте REST API базовой аутентификации WordPress, используя имена пользователей и пароли. Этот метод гарантирует безопасную аутентификацию запросов, отправляемых через ваше приложение.
  • Аутентификация запросов пользователей: Когда пользователь входит в ваше приложение, создается сессия, и учетные данные пользователя отправляются в зашифрованном формате в заголовке Basic Authorization.
  • Управление разрешениями: В зависимости от прав доступа пользователя в WordPress, REST API определяет, какие действия ему разрешено выполнять и к какому контенту он имеет доступ. Это помогает контролировать возможности пользователей и обеспечивать безопасное взаимодействие с вашим сайтом WordPress.

Использование базовой аутентификации WordPress с учетными данными пользователей гарантирует надлежащую аутентификацию и авторизацию действий каждого пользователя, обеспечивая безопасную среду для пользовательского контента.


Метод базовой аутентификации REST API WordPress с использованием учетных данных пользователя.

2. Использование учетных данных клиента для безопасного взаимодействия с REST API WordPress.


Если у вас есть приложение для Android или iOS, и вам необходимо взаимодействовать с контентом WordPress через его REST API, крайне важно защитить свой сайт от несанкционированного доступа. Вместо прямого использования учетных данных пользователей WordPress, что может быть рискованно, следует выбрать базовую аутентификацию WordPress с использованием учетных данных клиента.

Вот как безопасно использовать учетные данные клиента:

  • Получите идентификатор клиента (Client ID) и секретный ключ клиента (Client Secret): Вместо того чтобы раскрывать учетные данные пользователей WordPress, сгенерируйте идентификатор клиента и секретный ключ клиента для вашего приложения.
  • Отправка защищенных запросов: При отправке API-запросов указывайте идентификатор клиента (client ID) и секретный ключ клиента (client secret). Эти учетные данные передаются в зашифрованном виде в заголовке Basic Authorization.
  • Проверка и доступ: После получения вашего запроса REST API WordPress проверяет учетные данные клиента. Если проверка прошла успешно, вы получаете доступ к необходимым конечным точкам API, при этом ваш сайт остается в безопасности.

Использование учетных данных клиента гарантирует защиту информации о пользователях WordPress, обеспечивая при этом эффективное взаимодействие вашего приложения с сайтом WordPress.


Метод базовой аутентификации REST API WordPress с использованием учетных данных клиента.

Использование базовой аутентификации с REST API: имя пользователя и пароль.


  • В плагине перейдите в Настроить методы вкладка в левой части.
  • Нажмите на Обычная проверка подлинности в качестве метода аутентификации API.
  • Метод базовой аутентификации REST API WordPress с использованием имени пользователя и пароля.
  • Выберите Имя пользователя и пароль в кодировке Base64 и нажмите Следующая в правом верхнем углу.
  • Метод базовой аутентификации REST API WordPress с использованием имени пользователя и пароля.
  • Для проверки функциональности заполните поля «Имя пользователя» и «Пароль» для существующего пользователя.
  • Метод базовой аутентификации REST API WordPress с использованием имени пользователя и пароля.
  • Вы можете отредактировать конечную точку REST API, чтобы получать подробные данные именно из этой конечной точки. Например: здесь выбрана конечная точка /pages:
  • Нажмите на Тестовая конфигурация Нажмите кнопку и проверьте результат, отображаемый на экране.
  • Нажмите Завершить .
  • Метод базовой аутентификации REST API WordPress с использованием имени пользователя и пароля.

Базовая аутентификация REST API с использованием идентификатора клиента и секретного ключа клиента:


  • В плагине перейдите в Настройка аутентификации API и нажмите Базовая аутентификация в качестве метода аутентификации API.
  • Теперь выберите Идентификатор клиента: Секрет клиента В качестве типа ключа базовой аутентификации выберите любой из доступных методов шифрования в зависимости от того, как вы хотите закодировать учетные данные пользователя. HMAC является наиболее безопасным и рекомендуемым методом.
  • В конце, нажмите Сохранить конфигурацию Таким образом, базовая аутентификация для аутентификации REST API WordPress будет включена.
  • Метод базовой аутентификации REST API WordPress с использованием client-id и client-secret
  • После сохранения конфигурации базовой аутентификации REST API для доступа к REST API WordPress необходимо отправить запрос 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==
  • Попробуйте Ответ об ошибке для базовой аутентификации с использованием идентификатора клиента и секретного ключа клиента.
  • Попробуйте документация для разработчиков Больше подробностей.


 
  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"))   
  


    Выполните следующие шаги, чтобы отправить запрос к REST API с помощью Postman:

  • Нажмите на Образцы почтальона вкладка в плагине.
  • Метод базовой аутентификации REST API WordPress, реализованный в Postman.
  • Теперь наведите курсор на карточку «Примеры базовой аутентификации в Postman».
      • Метод базовой аутентификации REST API WordPress, JSON-файл Postman для имени пользователя:пароль
      • Импортируйте загруженный файл Файл JSON в приложение Postman, как показано ниже.
      • Метод базовой аутентификации REST API WordPress, импорт JSON-файла в Postman.
      • После импорта JSON-файла нажмите на «Запрос REST API» в разделе «Коллекции», как показано на последнем рисунке. Замените с вашим доменом WordPress в http://<wp_base_url>/wp-json/wp/v2/posts и заменить base64-кодированный в заголовке с базовым закодированным значением.
        • Пример:
          Для имени пользователя: testuser и пароля: password@123 значение в кодировке base64 будет 'dGVzdHVzZXI6cGFzc3dvcmRAMTIz'.

      Метод аутентификации REST API WordPress: замена базового URL в Postman
      • Метод базовой аутентификации REST API WordPress, JSON-файл Postman для идентификатора и секрета клиента.
      • Импортируйте загруженный файл Файл JSON в приложение Postman, как показано ниже.
      • Метод базовой аутентификации REST API WordPress, импорт JSON-файла в Postman.
      • После импорта JSON-файла нажмите на «Запрос REST API» в разделе «Коллекции», как показано на последнем рисунке. Теперь замените... с вашим доменом WordPress в http://<wp_base_url>/wp-json/wp/v2/posts и заменить base64-кодированный в заголовке с базовым закодированным значением.
      • Метод базовой аутентификации REST API WordPress. Postman: замена базового URL.


1. Ограничение REST API на основе ролей:


Эта функция ограничивает доступ к REST API WordPress в зависимости от ролей пользователей. Вы можете добавить в список разрешенных пользователей определенные роли, которым разрешен доступ к определенным ресурсам REST API. При отправке запроса к REST API проверяется роль пользователя, и доступ предоставляется только в том случае, если роль находится в списке разрешенных пользователей.


Как настроить ограничение доступа к REST API на основе ролей в WordPress?

  • Перейдите к плагину Дополнительные настройки меню.
  • В Ограничение на основе ролей В этом разделе всем ролям по умолчанию разрешен доступ к API.
  • Установите флажок рядом с ролями, которым вы хотите ограничить доступ к API.
  • Метод базовой аутентификации REST API WordPress, реализованный в Postman.
  • На изображении выше флажок роли подписчика включен. Таким образом, всякий раз, когда пользователь, имеющий роль подписчика, отправляет API-запрос, ему будет отказано в доступе к запрошенному ресурсу.

Примечание: Функция ограничения доступа на основе ролей действительна для базовой аутентификации (Имя пользователя: пароль), метода JWT и OAuth 2.0 (предоставление доступа по паролю).


2. Пользовательский заголовок:


Функция «Пользовательский заголовок» позволяет использовать собственный заголовок вместо стандартного заголовка «Авторизация». Это обеспечивает дополнительный уровень безопасности, поскольку REST API будет принимать запросы только с заданным вами именем пользовательского заголовка. Если кто-то попытается отправить запрос, используя стандартный заголовок «Авторизация», доступ будет запрещен.


Как настроить пользовательский заголовок для аутентификации через REST API WordPress?

  • Перейдите к плагину Дополнительные настройки меню.
  • В Пользовательский заголовок В этом разделе введите желаемое название заголовка в текстовое поле.
  • Сохраните изменения, чтобы применить новый пользовательский заголовок к запросам API.
  • Метод базовой аутентификации REST API WordPress, реализованный в Postman.

3. Исключите REST API:


Функция «Исключить REST API» позволяет разрешить доступ к определенным конечным точкам REST API без аутентификации. Эти исключенные API становятся общедоступными, что делает их доступными без необходимости ввода токена или авторизации.


Как настроить исключение REST API при аутентификации JWT?

  • Перейдите к плагину Дополнительные настройки меню.
  • В Исключить REST API В этом разделе введите конечные точки вашего API в требуемом формате.
  • Введенные API-интерфейсы будут исключены из процесса аутентификации и станут доступны для публичного доступа.
  • Метод базовой аутентификации REST API WordPress, реализованный в Postman.
  • Пример: Предположим, вы хотите исключить REST API 'Затем вам нужно ввести '/wp-json/wp/v2/posts' в текстовое поле.

4. Включите расширенное шифрование для токенов с использованием HMAC:


Эта функция доступна в методе базовой аутентификации. По умолчанию токены шифруются с использованием кодировки Base64, но с помощью расширенной опции можно включить шифрование HMAC для токенов. HMAC обеспечивает гораздо более высокий уровень безопасности, гарантируя надежную защиту запросов API от несанкционированного доступа и изменения данных.


Как настроить шифрование HMAC для токенов в базовой аутентификации WordPress?

  • Перейдите к плагину Дополнительные настройки вкладку и откройте Метод шифрования токена .
  • Выберите HMAC Вместо Base64 сохраните изменения, чтобы применить надежное шифрование ко всем токенам.


По умолчанию базовая аутентификация использует кодирование Base64, которое не является полностью безопасным. Однако с помощью таких плагинов, как наш, вы можете включить расширенное шифрование HMAC, что сделает токены более безопасными и подходящими для использования в производственной среде.

Базовая аутентификация идеально подходит для тестирования, разработки или небольших приложений, где важна простота. JWT рекомендуется для более крупных приложений, требующих сессий на основе токенов и масштабируемости.

Да. Базовая аутентификация может использоваться в мобильных приложениях с учетными данными пользователя или клиента для безопасной проверки запросов к API.

Если базовая аутентификация отключена, ваши REST API-интерфейсы больше не будут проверять запросы с её помощью. Это может сделать ваш API уязвимым для несанкционированного доступа, поэтому рекомендуется всегда оставлять аутентификацию включенной.

Функция ограничения доступа на основе ролей позволяет указать, каким ролям WordPress разрешен или запрещен доступ к вашим конечным точкам REST API.




Получите полнофункциональную пробную версию



 Спасибо за ваш ответ. Мы свяжемся с вами в ближайшее время.

Что-то пошло не так. Пожалуйста, отправьте запрос ещё раз.

Интеграция внешних/сторонних REST API-интерфейсов

Нужна помощь?

Пишите нам apisupport@xecurify.com Для получения оперативной консультации (по электронной почте/на встрече) по вашим требованиям, наша команда поможет вам выбрать наиболее подходящее решение/план в соответствии с вашими потребностями.


ADFS_sso ×
Привет!

Нужна помощь? Мы здесь!

поддержка