Решил использовать несколько провайдеров и нашел в документации такой пример:
# app/config/security.yml
security:
providers:
chain_provider:
chain:
providers: [in_memory, user_db]
in_memory:
memory:
users:
foo: { password: test }
user_db:
entity: { class: Acme\UserBundle\Entity\User, property: username }
И подумалось мне, что работать провайдеры будут так:
Однако, на деле оказалось что такая логика работает, только если провайдеры разного типа.
Напомню, Symfony поддерживает следующие типы провайдеров:
Поэтому, если Вы рассчитывали реализовать 2 одинаковых типа провайдера, но различающихся логикой (например один ищет пользователя в MySQL, а второй в MongoDB), то такую логику нужно реализовывать в одном провайдере (с типом id).
p.s. для каждого из типов авторизации, можно указывать нужный Вам провайдер, например так:
firewalls:
...
somename:
...
x509:
provider: some_key_from_above
http_basic:
provider: some_key_from_above
http_digest:
provider: some_key_from_above
...
some_key_from_above - имя провайдера, например in_memory или user_db (не путайте с типом провайдера).
Удачки.