Каков наилучший / рекомендуемый способ аутентификации пользователей, использующих отдых в Symfony?

Я разрабатываю остальные API в приложении Symfony.

Прямо сейчас мой apis используется моим приложением только во внешнем интерфейсе (запросы ajax от Angularjs). В будущем я хотел бы предоставить те же API сторонним приложениям.

Также в будущем у меня будут приложения для Android, iPhone и т. Д.

Я интегрировал FOSOAuthServerBundle и перепробовал все рабочие процессы типа предоставления. Это все работает. Но меня смущает, могут ли они использоваться моим приложением или они предназначены только для сторонних приложений, которым нравится интегрироваться с моим приложением?

Я понимаю, как эти рабочие процессы могут использоваться сторонними приложениями. Но на самом деле не могу понять, как я могу аутентифицировать своих собственных пользователей приложения?

Я хочу знать, как использовать этот пакет для аутентификации пользователей на моем веб-сайте с помощью rest apis из моего веб-приложения?

В настоящее время я использую FOSUserBundle и form_long для аутентификации пользователя, но я изменяю интерфейс для использования Angularjs и отдыха на основе. Таким образом, в идеале аутентификация должна работать как аутентификация form_login, но должна основываться на отдыхе.

Я провел исследование, и люди предлагают использовать «Учетные данные для пароля владельца ресурса», но для его раскрытия в javascript требуется секрет клиента, который может быть небезопасным.

Это должно работать, например Пользователь отправляет учетные данные имени пользователя / пароля, как это работает в случае form_login, но вместо перенаправления он должен просто вернуть access_token.

Нужно ли мне писать моего обычного провайдера аутентификации, который использует UsernamePasswordToken и прослушиватель брандмауэра, например OAuthListener, который возвращает access_token? Будет ли это безопасно использовать?

0

Решение

Подобный вопрос с некоторым обсуждением здесь:
Пароль типа предоставления Symfony2 FOSOAuthServerBundle требует секрет клиента

Если вы не хотите раскрывать секрет, используйте прокси между вашим внешним кодом и реальным сервером OAuth. В любом случае, если вы раскрываете секрет, ему все равно нужны учетные данные пользователя.

Вы можете установить разрешенные типы грантов для каждого клиента OAuth, поэтому в случае создания мобильных приложений вам нужно будет создать отдельную пару client_id & client_secret для приложения и для внешнего интерфейса с единственным разрешенным типом предоставления «пароль» для внешнего интерфейса.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]