Контроллер как REST и AJAX API
Полноценное REST API для внешних систем строится либо через маршруты D7 с аутентификацией по токенам (класс Bitrix\Main\Web\JWT) и отключением фильтра CSRF, либо через контроллеры с секцией restIntegration модуля rest. При разработке публичных методов критично строго ограничивать допустимые HTTP-глаголы и версиировать эндпоинты через префиксы URL.
Прогресс хранится в этом браузере. Войдите, чтобы сохранить его в аккаунте.
Что нужно понимать
-
1
Регистрация REST-методов
-
2
Обработка REST-запросов
-
3
Генерация токенов
-
4
Валидация токенов
-
5
Использование в API
Материалы
Официальная документация
-
Роутинг: раздел «Группировка маршрутов» Новая дока
-
JWT Новая дока
Проверь себя
Интегратор со стороны 1С вызывает ваш AJAX-эндпоинт с сервера и на каждый запрос получает ошибку CSRF. Почему и что делать?
BX.ajax.runAction живёт на сессии браузера, sessid привязан к ней, у внешнего сервера сессии нет. Для внешних клиентов нужен отдельный контроллер на HTTP-маршруте без Csrf и Authentication и со своим префильтром проверки токена, либо REST через restIntegration модуля rest.
Чем опасен вызов JWT::decode() без списка допустимых алгоритмов?
Без явного списка вроде HS256 метод может принять токен, подписанный слабым алгоритмом, и подпись перестаёт что-либо гарантировать. Документация требует всегда передавать список.
Заказчик хочет, чтобы методы модуля были доступны через вебхуки Битрикс24-стиля с токенами. Что для этого нужно?
Секция controllers в .settings.php модуля с restIntegration enabled: действия контроллера становятся REST-методами, а идентификатор модуля — scope. Проверку токенов и права выполняет модуль rest; действия стоит ограничить фильтром Scope с Scope::REST.
Почему изменяющее данные действие API нельзя оставлять с фильтром HttpMethod по умолчанию?
По умолчанию разрешены GET и POST, и действие можно вызвать обычной ссылкой, а параметры вместе с токеном осядут в логах веб-сервера. Для изменений оставляют только POST и передают токен в заголовке Authorization.
Не сходится?
Спросите ассистента BXMax: он знает документацию и материалы сайта по этой теме.
Знаете материал лучше?
Предложите ссылку: после проверки она появится в этом разделе.
Войти, чтобы предложить