У меня есть api с множеством конечных точек, к-рые я разделил по областям, например, /api/doc/ и /api/doc/import/contact/. (я используюNelmioApiDocBundle). Как для разных областей сделать авторизацию по разным api ключам (токенами)? Как реализовать? Возможно ли это вообще?
Security firewalls имеют возможность указания паттерна запроса для своего применения.
Таким образом вам достаточно определить множество firewall'ов для разных url pattern'ов и для каждого из них настроить разные условия авторизации пользователя.
Спасибо, это то, к чему я стремлюсь.
Вопрос в том еще, как создать отдельные ключи для авторизации в отдельной области (api/doc/test), то есть в двух разных папках, т.к. один ключ есть для общей авторизации так сказать. Поняли ли вы, что я хочу сделать?
CenterJoin, ключи - это просто способ аутентификации, один из многих.
Symfony Security предоставляет большой выбор способов настройки и выбор конкретной реализации на самом деле зависит от вас. К примеру от того, откуда берутся эти ключи, как передаются, как у вас определены пользователи, хотите ли вы какие-то дополнительные метаданные (к примеру роли) и т.п.
Поэтому вам стоит подробнее посмореть на примеры в документации Symfony и примерить их на специфику вашего конкретного проекта. В частности имеет смысл посмотреть на вот эту статью, там как раз приводится пример аутентификации через API token с использованием нового компонента Security, который заменит текущий, начиная с Symfony 6.
Либо же вы можете посмотреть на пример, относящийся к текущей версии компонента Security.