Middle Роутинг и контроллеры Рекомендуется

Контроллер как REST и AJAX API

Полноценное REST API для внешних систем строится либо через маршруты D7 с аутентификацией по токенам (класс Bitrix\Main\Web\JWT) и отключением фильтра CSRF, либо через контроллеры с секцией restIntegration модуля rest. При разработке публичных методов критично строго ограничивать допустимые HTTP-глаголы и версиировать эндпоинты через префиксы URL.

Прогресс хранится в этом браузере. Войдите, чтобы сохранить его в аккаунте.

Что нужно понимать

  • 1
    Регистрация REST-методов
  • 2
    Обработка REST-запросов
  • 3
    Генерация токенов
  • 4
    Валидация токенов
  • 5
    Использование в API

Материалы

Официальная документация

Проверь себя

Интегратор со стороны 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: он знает документацию и материалы сайта по этой теме.

Знаете материал лучше?

Предложите ссылку: после проверки она появится в этом разделе.

Войти, чтобы предложить
Поделиться в Telegram
Мы используем файлы cookie для улучшения работы сайта. Продолжая использовать сайт, вы соглашаетесь с нашей политикой конфиденциальности.
AI Домовой

AI Домовой История

на связи

пишет…
Нет истории чатов
AI Домовой

Нужна авторизация

Войдите, чтобы задавать вопросы AI Домовому.

Войти