Firebase: как проверить сессию на стороне клиента с помощью PHP-скрипта на стороне сервера

1

Я аутентифицирую клиентскую часть через Firebase SDK пользователей в своем приложении. Затем начинается сеанс клиента. Затем я хочу, чтобы пользователь мог опубликовать на конечных точках PHP некоторые данные. Я хочу, чтобы скрипт PHP проверял, поступает ли запрос от аутентифицированного пользователя, а затем проверяет остальную часть данных. Если все в порядке, мы завершаем операцию.

Я решил сделать это вот так:

  • Пользователь аутентифицирован на стороне клиента
  • В событии Auth запрос на токен JWT с идентификатором пользователя в нем выдается на стороне клиента через ajax на выделенный PHP-скрипт. Как только маркер генерируется, он сохраняется в cookie сеанса.
  • В представлении формы будет помещен токен JWT, и конечная точка будет декодировать токен и проверить, является ли сохраненный в нем uid действительным идентификатором пользователя, зарегистрированным в базе данных Firebase.

Хорошая или страшная идея с точки зрения безопасности?

  • 0
    Если вы используете uid из аутентификации Firebase в качестве идентификатора пользователя, вы можете просто использовать JWT, связанный с сеансом Firebase, вместо того, чтобы создавать его самостоятельно.
  • 0
    Правда, но, безусловно, я что-то упускаю: как я могу использовать токен, чтобы убедиться, что у пользователя есть активный сеанс. Я расшифровал токен, и в нем есть только поля uid и iat. Итак, я знаю, что он был выпущен в определенное время, но как я могу быть уверен, что он действителен? Есть ли такой метод для применения на стороне сервера через интерфейс REST?
Показать ещё 1 комментарий
Теги:
firebase
firebase-security
session
firebase-authentication

1 ответ

1

Первое эмпирическое правило заключается в том, что для проверки созданного Firebase JWT вам нужен секрет вашей Firebase. Второе правило заключается в том, что ваш секрет Firebase никогда не должен отправляться или храниться на клиенте.

Учитывая, что для проверки JWT через PHP вам нужно будет использовать библиотеку, которая ее расшифровывает и проверяет, что она была подписана вашим секретом Firebase. Как только вы это подтвердите, я посмотрю на UID JWT и посмотрю, соответствует ли он uid пользователю, которому принадлежит ресурс.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню