Авторизация и REST
Добавлено: 2016.02.08, 11:54
Коллеги, добрый день!
Разрабатываю я в дополнение к сайту на Yii2 гибридное мобильное приложение (AngularJS - Ionic).
Сделал в Yii2 отдельное приложение для REST API, нужные данные в JSON возвращаются - всё замечательно.
Но вот с авторизацией мобильного клиента в REST в документации Yii2 и всех имеющихся обсуждениях царит какая-то анархия, с которой и хотелось бы разобраться.
Что хотелось бы:
1) Иметь возможность из приложения выполнить вход по логину/паролю или же через пару AuthClient-ов (например, FB + Google).
2) В приложении хранить валидные данные для доступа (как я понимаю, это будет в любом случае токен + хотелось бы использовать ID устройства, это UUID кажется) в течение N дней (например, 60).
3) В процессе использования приложения с определённой периодичностью (скажем, раз в 7-10 дней) обновлять токен на сервере и возвращать приложению. В противном случае, завладев токеном и подделав UUID можно было бы использовать чужие данные до 60 дней.
4) Пользователь должен иметь возможность быть одновременно залогиненным с разных устройств.
Возникающие вопросы:
1) Насколько я понял, принципиальной разницы между использованием HttpBearerAuth или QueryParamAuth для моего случая нет. Это действительно так?
2) Далее я обратил внимание, что многие начинают для этих целей внедрять в приложение собственный Oauth2-сервер на Yii2 (типа https://github.com/Filsh/yii2-oauth2-server). Это необходимо и оправдано?
3) Как и где функционально вы бы реализовали пп. 2-3-4 требований? Хотя бы на уровне общей структуры бэкенда: в каких контроллерах-моделях.
Может кто-то уже делал что-то подобное и сможет поделиться частичкой мудрости в виде кода? Или возможно что-то из моих требований явно лишнее?
Разрабатываю я в дополнение к сайту на Yii2 гибридное мобильное приложение (AngularJS - Ionic).
Сделал в Yii2 отдельное приложение для REST API, нужные данные в JSON возвращаются - всё замечательно.
Но вот с авторизацией мобильного клиента в REST в документации Yii2 и всех имеющихся обсуждениях царит какая-то анархия, с которой и хотелось бы разобраться.
Что хотелось бы:
1) Иметь возможность из приложения выполнить вход по логину/паролю или же через пару AuthClient-ов (например, FB + Google).
2) В приложении хранить валидные данные для доступа (как я понимаю, это будет в любом случае токен + хотелось бы использовать ID устройства, это UUID кажется) в течение N дней (например, 60).
3) В процессе использования приложения с определённой периодичностью (скажем, раз в 7-10 дней) обновлять токен на сервере и возвращать приложению. В противном случае, завладев токеном и подделав UUID можно было бы использовать чужие данные до 60 дней.
4) Пользователь должен иметь возможность быть одновременно залогиненным с разных устройств.
Возникающие вопросы:
1) Насколько я понял, принципиальной разницы между использованием HttpBearerAuth или QueryParamAuth для моего случая нет. Это действительно так?
2) Далее я обратил внимание, что многие начинают для этих целей внедрять в приложение собственный Oauth2-сервер на Yii2 (типа https://github.com/Filsh/yii2-oauth2-server). Это необходимо и оправдано?
3) Как и где функционально вы бы реализовали пп. 2-3-4 требований? Хотя бы на уровне общей структуры бэкенда: в каких контроллерах-моделях.
Может кто-то уже делал что-то подобное и сможет поделиться частичкой мудрости в виде кода? Или возможно что-то из моих требований явно лишнее?