Использование аутентификации firebase для аутентификации библиотеки Google Cloud bigquery — NodeJS

#node.js #google-cloud-platform #google-bigquery #firebase-authentication #credentials

#node.js #google-облачная платформа #google-bigquery #firebase-аутентификация #учетные данные

Вопрос:

Я пытаюсь создать приложение, в котором пользователь может выполнять запросы к таблицам bigquery. Однако библиотека BigQuery NodeJS требует аутентификации с использованием credentials объекта.

Как я могу пройти аутентификацию с помощью bigquery, используя того же пользователя, с которым я вошел в firebase.auth() систему?

 const {BigQuery} = require('@google-cloud/bigquery')
const firebase = require('firebase')

const app = firebase.initializeApp(..);

await app.auth().signInWithPopup(..)

const bigQuery = new BigQuery({credentials: ???})
 

Ответ №1:

Невозможно использовать аутентификацию Firebase для последующего доступа к другим продуктам Google Cloud, таким как BigQuery. Для BigQuery требуется токен OAuth2, в то время как Firebase использует JWTs. Нет способа преобразовать последнее в первое.

Если ваши пользователи входят в Firebase с помощью социального провайдера, они могут использовать токен OAuth2 от этого провайдера для доступа к BigQuery. Но в этом случае это не связано с их сеансом аутентификации Firebase.

Комментарии:

1. Вы знаете, как получить JWT из firebase? Что касается вашего второго пункта, что, если я зарегистрирую их в соответствующей области?

2. 1) Доступна основная Firebase JWR, которая вам будет интересна user.getIDToken() . 2) Да, это позволило бы им получить доступ к BigQuery, но, как уже было сказано, на данный момент это больше не имеет ничего общего с Firebase.

3. Итак, как бы вы использовали токен OAuth2, полученный из firebase sign, для аутентификации bigquery?

4. @MatanTsuberi — Если этот идентификатор не был добавлен в Google Cloud IAM (что является плохой идеей), токен будет бесполезен для BigQuery. Я рекомендую создать учетную запись службы, которой управляет ваш код в Firebase, который выдает команды от имени пользователя с учетной записью службы, предоставляющей авторизацию для доступа к BigQuery.

5. Спасибо, Джон, это действительно правильный путь, если кто-то хочет интегрировать Big Query в свое приложение. Как уже неоднократно говорилось, это больше не имеет ничего общего с Firebase, поскольку нет способа использовать пользователя аутентификации Firebase для доступа к другим продуктам Google Cloud, таким как BigQuery.