Basic аутентифікація
З версії 5.6 цей спосіб не є актуальним, тому що на його основі працюють Паролі додатків додані в ядро.
Для включення можливості базової авторизації потрібно встановити WordPress плагін Basic Authentication .
При базовій аутентифікації клієнт разом із запитом надсилає серверу логін та пароль. Ці дані надсилаються в заголовку запиту Authorization
як base64 коду.
Authorization: Basic base64_encode(login:password)
Так наприклад, якщо логін і пароль admin потрібно додати такий заголовок:
Authorization: Basic YWRtaW46YWRtaW4=
Так як base64 дуже просто розкодувати, такий метод абсолютно небезпечний , якщо дані передаються не HTTPS з’єднанню.
Basic Авторизація у програмі Postman
- Перейдіть у вкладку Authorization ;
- Виберіть метод аутентифікації Basic Auth ;
- Вкажіть логін та пароль;
- Всі! Надсилайте авторизовані запити.
Basic Авторизація через WP HTTP API
$response = wp_remote_request( 'http://example.com/wp-json/wp/v2/posts/113', [ 'method' => 'DELETE', 'headers' => [ 'Authorization' => 'Basic' . base64_encode( 'username:password' ) ] ] ); if( 200 == wp_remote_retrieve_response_code( $response ) ) echo 'Піст видалено!'; else echo 'Помилка: Не вдалося видалити пост';
Дивіться також: WP HTTP API
Basic Авторизація через JavaScript
Така авторизація потрібна тільки якщо надсилається AJAX запит з одного сайту на інший. Якщо AJAX запит відбувається всередині сайту, і користувач вже авторизований, то разом із запитом будуть відправлені куки аутентифікації, а це означає, що авторизація вже є, потрібно тільки вказати nonce-код ( див. вище ).
$.ajax({ url: 'http://example.com/wp-json/wp/v2/posts/113', method: 'DELETE', crossDomain: true, beforeSend: function ( xhr ) { xhr.setRequestHeader( 'Authorization', 'Basic' + Base64.encode( 'username:password' ) ); }, success: function( data, txtStatus, xhr ) { console.log(data); console.log(xhr.status); } });
Basic Авторизація через командний рядок
curl -X DELETE http://example.com/wp-json/wp/v2/posts/113 -H 'Authorization: Basic a2FtYTprYW1h'
Чому авторизація може не працювати?
Якщо ви надсилаєте заголовки автентифікації ( Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
), але запит не приймається, можливо у вас використовується Apache в середовищі CGI. Це означає, що Apache вирізує заголовки. Спробуйте додати наступний код у файл конфігурації Apache або файл .htaccess :
<IfModule mod_setenvif> SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1 </IfModule>
З Версії WP 5.6 аналогічний код додається автоматично (рядок 3):
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase / RewriteRule ^index.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule. /index.php [L] </IfModule>