Я создаю приложение для Android, в котором я хочу использовать Firebase только для аутентификации и мой собственный бэкэнд для остальных.
Я следил за этой документацией по Firebase , где я узнал, как получить токен jwt. Мне удалось отправить токен в мои остальные API через метод POST и проверить его там с помощью библиотеки php JWT Firebase, и теперь я немного застрял.
Когда правильное время для получения токена?
Должен ли я:
- Получите токен при запуске приложения (или зарегистрируйтесь / войдите в систему и т. Д.), Сохраните его в переменной, чтобы мне не приходилось извлекать его снова, а затем отправляйте токен при каждом http-запросе для авторизации пользователя.
- Получите токен один раз и сохраните его в SharedPreferences.
- Перед каждым http-запросом я извлекаю токен, чтобы он был свежим, и я могу быть уверен, что он действителен.
- Проверяйте токен только при запуске приложения и, если он действителен, извлекайте идентификатор пользователя из токена в клиенте, сохраняйте его в переменной и используйте идентификатор в будущих http-запросах, чтобы узнать, какой пользователь выполняет запросы.
Меня больше всего заинтриговало использование третьего варианта, однако код для извлечения токена довольно длинный, и я могу себе представить, что мой код очень быстро запутался. Также четвертый вариант звучит для меня великолепно на бумаге, но я чувствую, что это действительно плохая идея с точки зрения безопасности.
Я боюсь использовать первый и второй вариант, потому что время истечения токена. Я могу выяснить, что токен недействителен в бэкэнде, но тогда мне нужно будет сообщить клиенту, что он недействителен, сгенерировать новый токен, а затем повторить запрос, что мне кажется очень сложным.
Существуют ли общие практики, которым я должен следовать? Один из моих примеров хоть немного прав или я совершенно не прав?
Я очень новичок в этой области развития своей новой работы и не могу найти много информации о том, как мне поступить в подобных ситуациях. Буду очень благодарен за любой ответ!