Я использую REST API в проекте PHP для отправки данных в Firestore DB через curl (PHP curl).
Я пытаюсь понять, как настроить правило аутентификации для "службы"и предложенный подход с помощью авторизации Google кажется мне излишним.
Мои данные должны быть доступны для чтения ВСЕМ, но доступны для записи только моим PHP-сервером.
До сих пор я мог гарантировать, что операция записи могла произойтитолько если в отправленном наборе данных указан определенный код (auth = 123):
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.resource.data.auth==123
//request.auth.uid != null;
}
}
}
Проблема в том, что, поскольку каждый может читать данные, очень легко найти это поле (auth) и узнатьэто код 123.
Возможен любой из двух вариантов:
Отправка заголовков (или других данных, не записанных в данные БД) и проверка этих правилвместо полей данных?
В противном случае (менее предпочтительно) можно было бы скрыть ТОЛЬКО поле «auth» для пользователей?
Я знаю, что вариант 2 невозможен впринцип, но это можно как-то обойти, даже если я не знаю как.
Хотя я понимаю, что это не лучший подход, этого было бы более чем достаточно для защиты моего приложения.
EDIT
Вероятно, самым простым и чистым решением было бы создать пользователя в Firestore db с парой электронной почты / паролем и использовать его в запросе PHP curl
Я думаю, что янеобходимо выполнить запрос curl следующим образом:
https://firebase.google.com/docs/reference/rest/auth/#section-sign-in-email-password
и затем выполнить загрузку данных через другой PHP curl, используя в качестве аутентификации токен, полученный в первом запросе
Я чувствую, что это верный путь, но .... Я застреваю при первом запросе с
404. That’s an error.
The requested URL /identitytoolkit/v3/relyingparty/verifyPassword?key=myapiket was not found on this server. That’s all we know.
Мне кажется, что я плохо сформулировал свой запрос локона ... любое предложение о том, как правильно обработатьполезная нагрузка?
РЕШЕНИЕ
Смотрите мой ответ ниже с шагами и кодом PHP