Имеется вебсайт с поддержкой авторизации в личный кабинет (ЛК), через сессии. Разрабатываются мобильные приложения(МП) для Android и IOS платформ. Встала задача реализовать авторизацию в ЛК для МП. Было рассмотрено 2 метода:
1) Простой - Basic Auth с использованием ssl
2) Более мудренный - защита через токены, как я понял данный метод:
* клиент через МП отсылает реквзиты с использованем хэш - функции
* АПИ принимает и проверяет хэш на соответствие пользователя в БД
* если проверка прошла успешно, АПИ отсылает в ответе токен. Токен рекомендуют сделать временным, чтобы уменьшить "окно" атаки на случай если он будет "потерян и найден нехорошими людьми"
* МП получает токен и использует его в своих запросах к ЛК в АПИ.
* на стороне АПИ принимаются запросы на действия с ЛК, предварительно проверив наличие и валидность токена. Если токен просрочен, то процесс получения токена повторяется
Вопросы:
> Прошу уточнить правильно ли понят мной метод по защите с токенами. Получается он намного сложнее и более нагружает апи, нежели Basic-auth !?
> Какой метод лучше выбрать и почему?
Про токены здесь: https://jwt.io/introduction/
Можно не читать информацию о пользователе с базы, а брать с самого токена.
Типичная реализация два токена: refresh token (opaque token) и access token (с кротким строком жизни)
делаете метод getToken. На котором пользователь взамен логина с паролем получает токен. Этот токен пишется в бд со сроком действия. И далее ко всем остальным методам клиент обращается с токеном.
Если хочется еще большей секурности то пусть шифрует токеном все тело сообщения.
SSL must have вне зависимости от выбранного типа.