На самом деле это не вопрос, а руководство о том, как делать аутентифицированные запросы к API Wordpress с использованием JWT. Я пишу это как напоминание для себя и для тех, кому может понадобиться помощь по той же теме.
rest-api
authentication
grazianodev
источник
источник
Ответы:
Почему аутентификация JWT
Я создаю сайт, который использует Wordpress в качестве внутреннего интерфейса, а приложение React + Redux в качестве внешнего интерфейса, поэтому я извлекаю весь контент внешнего интерфейса, отправляя запросы в Wordpress API. Некоторые запросы (в основном, запросы POST) должны быть аутентифицированы, когда я столкнулся с JWT.
Что нам нужно
Чтобы использовать аутентификацию JWT с Wordpress, сначала нужно установить плагин JWT Authentication for WP REST API . Как объясняется в инструкциях плагина, нам также нужно изменить некоторые основные файлы Wordpress. Особенно:
В файл .htaccess, включенный в корневую папку установки Wordpress, нам нужно добавить следующие строки:
В файл wp-config.php, также включенный в корневую папку установки Wordpress, нам нужно добавить следующие строки:
Тестирование, чтобы увидеть, доступен ли JWT
Чтобы убедиться, что теперь мы можем использовать JWT, запустите Postman и сделайте запрос к стандартному индексу Wordpress API:
Несколько новых конечных точек, таких как
/jwt-auth/v1
и/jwt-auth/v1/token
должны были быть добавлены в API. Если вы можете найти их в ответе на вышеуказанный запрос, это означает, что JWT теперь доступен.Получение токена JWT
Давайте пока остановимся на Postman и запросим токен для Wordpress API:
Ответ будет содержать токен JWT, который является зашифрованным ключом и выглядит примерно так:
Создание аутентифицированного запроса
Попробуем изменить заголовок сообщения с идентификатором 300 в качестве примера аутентифицированного запроса с JWT.
В Postman выберите POST в качестве метода и введите следующую конечную точку:
Выберите «Нет аутентификации» на вкладке «Авторизация» и добавьте следующее на вкладке «Заголовки»:
Наконец, на вкладке Body выберите параметры raw и JSON (application / json), а затем в редакторе прямо под параметрами введите следующее:
Теперь вы можете нажать SEND. Посмотрите на вкладке ответа все данные о записи, которую мы запросили: значение для ключа заголовка теперь должно быть
YES! Authenticated requests with JWT work
источник
register_rest_route( 'jwt-auth/v1', 'your_custom_endpoint ...
. Все, что находится в / jwt-auth /, будет нуждаться в авторизацииДополняя ответ @ grazianodev, вы получаете токен авторизации с помощью cURL:
После этого отправьте ваши запросы с заголовком: «Авторизация: токен на предъявителя $»
Где $ token - это токен, возвращенный функцией getToken () выше.
Я лично использую плагин « Отключить REST API и требовать аутентификацию JWT / OAuth », чтобы ограничить доступ к API только с помощью токена выше.
источник