Безпека
Бандл використовує безпеку 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 на рівні вебсервера або окремого бандла.