1

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

Я думал сделать это следующим образом:

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

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

+0

Если вы используете 'uid' из autbh firebase как идентификатор пользователя, вы можете просто использовать [JWT, связанный с сеансом Firebase] (https://www.firebase.com/docs/web/api/ firebase/getauth.html) вместо того, чтобы создавать их самостоятельно. –

+0

Правда, но, конечно, я что-то упускаю: как я могу использовать токен, чтобы убедиться, что у пользователя активная сессия. Я декодировал токен, и он имеет только поля uid и iat. Поэтому я знаю, что он был выпущен в определенное время, но как я могу быть уверенным, что он действительный? Существует ли такой метод, который будет применяться на стороне сервера через интерфейс REST? –

+0

Зависит от вашего определения активного сеанса. Сама JWT будет действительна в течение времени, указанного на вашей странице входа в систему Firebase и в Auth. Вы можете проверить это, используя свой REST API, чтобы попытаться прочитать/записать, который мог сделать только аутентифицированный пользователь. –

ответ

1

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

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

Смежные вопросы