Как сделать Firebase HTTP успокоительные вызовы, используя только ключ API? - PullRequest
0 голосов
/ 20 ноября 2018

Мне нужно совершать спокойные звонки в определенную область базы данных Firebase. Вызов должен быть выполнен как пользователь, не прошедший проверку подлинности, но я хочу защитить его, используя API_KEY в заголовке, чтобы боты не тратили данные. Правила базы данных сделают данные доступными только для чтения неаутентифицированным пользователям. Как я могу разрешить только HTTP-вызовы для чтения данных с использованием ключа API в Firebase?

Я нашел этот раздел для запросов аутентификации, но мне нужно сделать необработанные HTTP-запросы и не могу использовать поддерживаемые методы SDK в предоставленных примерах.

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Простой способ назначить конкретный неузнаваемый путь в вашей базе данных для доступа этим клиентом и разрешить публичный доступ для чтения / записи там.Например:

{
  "rules": {
    "content_4287dhicer29pr2sdkuyfweuf": {
      ".read": true,
      ".write": true
    }
  }
}

Теперь любой, кто знает этот ключ content_4287dhicer29pr2sdkuyfweuf, может читать / писать его, но только те люди, которые знают его.А поскольку ключ совершенно неуязвим, вряд ли кто-нибудь сможет найти его, не получив от вас.Ну ладно, может быть, вы можете придумать лучший способ генерирования токена, чем ударить по клавиатуре.:)

То, что мы здесь сделали, это, по сути, встраивание ключа API в ключ в базе данных.Таким образом, вместо того, чтобы быть в заголовке в вашем запросе, он теперь находится в URL.

0 голосов
/ 20 ноября 2018

То, что вы пытаетесь сделать, невозможно. База данных реального времени не имеет выделенных ключей API, которые могут контролироваться правилами безопасности. Ваша база данных имеет один (старый) закрытый ключ, который эффективно дает пользователю полный доступ ко всему в базе данных. Вы не должны использовать это больше.

Другая форма аутентификации - та, которую вы связали. Вам понадобится выполнить аутентификацию OAuth2, чтобы получить токен, который принадлежит учетной записи пользователя Google или учетной записи Firebase. Вы используете этот токен в ваших необработанных HTTP-запросах.

Нет другого способа указать какой-либо особый доступ к базе данных, который может контролироваться правилами безопасности. Не используя ни один из указанных выше двух методов, вы фактически обязаны читать только те данные, которые правила безопасности допустили как полностью открытые.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...