Symfony2 два метода аутентификации для одного API

Есть ли возможность сделать двухфакторную аутентификацию в Symfony 2 для REST API?

Я хотел бы добиться чего-то вроде этого:

  1. Пользователь в конечной точке (мобильное приложение) динамически подготавливает логин и пароль (на основе некоторого алгоритма)
  2. Пользователь в конечной точке запрашивает интерфейс API, например /api/me?access_token=[ACEESTOKEN]
  3. Чтобы продолжить, пользователь должен передать созданный логин и пароль для базовой аутентификации.
  4. Symfony2 подготавливает логин и пароль так же, как и мобильное приложение, и сравнивает их с отправленными из мобильного приложения.
  5. Если все в порядке, Symfony2 проверяет access_token (OAuth2 реализован с помощью FOSOAuthServerBundle). Если все в порядке, провайдер получает объект пользователя на основе токена доступа, пользователь проходит аутентификацию и может получить доступ к API/Me.

person Tom    schedule 15.04.2015    source источник


Ответы (1)


вы можете создать/добавить несколько провайдеров аутентификации, и менеджер аутентификации Symfony проверит каждого провайдера аутентификации

«Для AuthenticationProviderInterface требуется метод аутентификации для токена пользователя и метод поддержки, который сообщает диспетчеру аутентификации, следует ли использовать этого провайдера для данного токена. В случае нескольких провайдеров диспетчер аутентификации затем перейдет к следующему провайдер в списке."

Пример

person wonde    schedule 15.04.2015