Basic аутентифікація

З версії 5.6 цей спосіб не є актуальним, тому що на його основі працюють Паролі додатків додані в ядро.

Для включення можливості базової авторизації потрібно встановити WordPress плагін Basic Authentication .

При базовій аутентифікації клієнт разом із запитом надсилає серверу логін та пароль. Ці дані надсилаються в заголовку запиту Authorizationяк base64 коду.

Authorization: Basic base64_encode(login:password)

Так наприклад, якщо логін і пароль admin потрібно додати такий заголовок:

Authorization: Basic YWRtaW46YWRtaW4=

Так як base64 дуже просто розкодувати, такий метод абсолютно небезпечний , якщо дані передаються не HTTPS з’єднанню.

Basic Авторизація у програмі Postman

  1. Перейдіть у вкладку Authorization ;
  2. Виберіть метод аутентифікації Basic Auth ;
  3. Вкажіть логін та пароль;
  4. Всі! Надсилайте авторизовані запити.

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>

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *