Авторизация и REST

Всё что касается построения API
Ответить
X-Loading
Сообщения: 26
Зарегистрирован: 2011.11.15, 14:55

Авторизация и REST

Сообщение X-Loading »

Коллеги, добрый день!

Разрабатываю я в дополнение к сайту на 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 требований? Хотя бы на уровне общей структуры бэкенда: в каких контроллерах-моделях.

Может кто-то уже делал что-то подобное и сможет поделиться частичкой мудрости в виде кода? Или возможно что-то из моих требований явно лишнее? :roll:
NikVolkov
Сообщения: 83
Зарегистрирован: 2015.03.24, 22:03

Re: Авторизация и REST

Сообщение NikVolkov »

Доброго дня!

У меня похожие вопросы.

К чему пришли?
Аватара пользователя
Bezlepkin
Сообщения: 731
Зарегистрирован: 2012.11.10, 18:59
Контактная информация:

Re: Авторизация и REST

Сообщение Bezlepkin »

HttpBearerAuth передает токен в заголовке, а значит безопасней.
Аватара пользователя
vitovt
Сообщения: 210
Зарегистрирован: 2012.03.21, 10:37
Контактная информация:

Re: Авторизация и REST

Сообщение vitovt »

Подниму тему авторизации, чтобы не плодить кучу тем, а так как поиск по коротким запросам не работает то может быть тема уже поднималась.

Вопрос авторизации по ключам вроде бы простой и с другой стороны не совсем.

Делаю авторизацию по JWT

Для работы можно поставить вот этот пакет - https://github.com/sizeg/yii2-jwt

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

Но! Говорят надо делать два ключа - один auth_token второй refresh_token

Вопрос как и для чего, какой из них хранить, а какой нет? По какому валидировать?

Второй вопрос - извлечение информации их токена. Суть JWT в том, что сам токен - самодостаточен, из него можно вытянуть, например, ID пользователя \ клиента и не лезть в базу для сверки при каждом запросе. Вопрос как?
fedornabilkin
Сообщения: 17
Зарегистрирован: 2017.09.23, 15:17

Re: Авторизация и REST

Сообщение fedornabilkin »

Хм, кто-то разобрался с этим вопросом? Возникла задача перенести сайт на другой домен. На данный момент работают два сайта с одной базой с разных доменов. Теперь боссы хотят редиректить всех со старого сайта, кто еще не перешел на новый и надо это делать с авторизацией на новом сайте.
Т.е. если юзер был авторизован на старом сайте, перекинуть его авторизованным на новый сайт. Возможно ли такое сделать, если сессии хранятся в redis?
andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: Авторизация и REST

Сообщение andku83 »

можно использовать что-то подобное
Ответить