Безпека

Безпека

Бандл використовує безпеку JsonRpcBundle (ufo_json_rpc.security, див. Налаштування бандлу); окремої REST-конфігурації немає.

# config/packages/ufo_json_rpc.yaml
ufo_json_rpc:
    security:
        protected_api: true        # за замовчуванням: виклики потребують токена
        protected_doc: false       # за замовчуванням: документація відкрита
        token_name: 'Ufo-RPC-Token'
        clients_tokens:
            - '%env(resolve:UFO_API_TOKEN)%'
        providers:
            partners:
                api_groups: [partners]
                clients_tokens: ['%env(PARTNERS_TOKEN)%']
            internal:
                api_groups: [internal]
                service: App\Security\InternalTokenValidator   # реалізує ITokenValidator
Запит Перевірка Помилка
REST-виклик protected_api: токен із заголовка token_name перевіряє провайдер групи API входу, а для груп без провайдера — clients_tokens 401
OpenAPI / Postman protected_doc: та сама перевірка для групи документа 401
curl https://example.com/internal/catalog/list -H 'Ufo-RPC-Token: internal-secret'
  • Групу визначає маршрут (defaults.api_group імпорту), тож токен однієї групи не відкриває вхід іншої. Параметр api_group у запиті групу не змінює.
  • Провайдер задає або clients_tokens, або service, що реалізує Ufo\JsonRpcBundle\Security\Interfaces\ITokenValidator (Провайдери для груп API).
  • JSON-RPC повертає 403 для недійсного токена; REST повертає 401 і для відсутнього, і для недійсного.
  • protected_doc не захищає виклики, а protected_api — документацію: це два незалежні прапорці.
  • Firewall-и Symfony Security діють на REST-шляхи так само, як на будь-які інші маршрути.

CORS preflight (OPTIONS) REST-маршрути не обробляють: якщо OPTIONS немає в methods атрибута #[Route], відповідь — 405. Налаштуйте CORS на рівні вебсервера або окремого бандла.