Коллеги, добрый день!
Разрабатываю я в дополнение к сайту на 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 требований? Хотя бы на уровне общей структуры бэкенда: в каких контроллерах-моделях.
Может кто-то уже делал что-то подобное и сможет поделиться частичкой мудрости в виде кода? Или возможно что-то из моих требований явно лишнее?
Авторизация и REST
Re: Авторизация и REST
Доброго дня!
У меня похожие вопросы.
К чему пришли?
У меня похожие вопросы.
К чему пришли?
Re: Авторизация и REST
HttpBearerAuth передает токен в заголовке, а значит безопасней.
Re: Авторизация и REST
Подниму тему авторизации, чтобы не плодить кучу тем, а так как поиск по коротким запросам не работает то может быть тема уже поднималась.
Вопрос авторизации по ключам вроде бы простой и с другой стороны не совсем.
Делаю авторизацию по JWT
Для работы можно поставить вот этот пакет - https://github.com/sizeg/yii2-jwt
Все вроде бы хорошо, генерировать ключ умеем, проверять при каждом запросе к REST тоже.
Но! Говорят надо делать два ключа - один auth_token второй refresh_token
Вопрос как и для чего, какой из них хранить, а какой нет? По какому валидировать?
Второй вопрос - извлечение информации их токена. Суть JWT в том, что сам токен - самодостаточен, из него можно вытянуть, например, ID пользователя \ клиента и не лезть в базу для сверки при каждом запросе. Вопрос как?
Вопрос авторизации по ключам вроде бы простой и с другой стороны не совсем.
Делаю авторизацию по JWT
Для работы можно поставить вот этот пакет - https://github.com/sizeg/yii2-jwt
Все вроде бы хорошо, генерировать ключ умеем, проверять при каждом запросе к REST тоже.
Но! Говорят надо делать два ключа - один auth_token второй refresh_token
Вопрос как и для чего, какой из них хранить, а какой нет? По какому валидировать?
Второй вопрос - извлечение информации их токена. Суть JWT в том, что сам токен - самодостаточен, из него можно вытянуть, например, ID пользователя \ клиента и не лезть в базу для сверки при каждом запросе. Вопрос как?
-
- Сообщения: 17
- Зарегистрирован: 2017.09.23, 15:17
Re: Авторизация и REST
Хм, кто-то разобрался с этим вопросом? Возникла задача перенести сайт на другой домен. На данный момент работают два сайта с одной базой с разных доменов. Теперь боссы хотят редиректить всех со старого сайта, кто еще не перешел на новый и надо это делать с авторизацией на новом сайте.
Т.е. если юзер был авторизован на старом сайте, перекинуть его авторизованным на новый сайт. Возможно ли такое сделать, если сессии хранятся в redis?
Т.е. если юзер был авторизован на старом сайте, перекинуть его авторизованным на новый сайт. Возможно ли такое сделать, если сессии хранятся в redis?
Re: Авторизация и REST
можно использовать что-то подобное