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>