Доступ из функций Firebase к приложению на GCE за Identity Aware Proxy - PullRequest
0 голосов
/ 24 сентября 2018

Я пытался следовать этому руководству authenticating_from_a_service_account (в этом руководстве нет примера Node.js и не относится к функциям firebase) и другим, чтобы позволить функции firebase получить доступ к другому приложению /API на GCE за IaP, который требует авторизованного JWT.Я пробовал несколько методов и подходов, которые все не дали результатов и не работают.

Подход 1 - с использованием googleapis auth lib с 'auth.getClient ()' - Мне удалось заставить это работать локально при обслуживании функции, локально этот метод возвращает объект JWT, который я могу предоставить 'AdditionalClaims' (со свойством 'target_audience'), а затем использовать 'auth.authorize ()', который предоставляет JWT (это работает локально).но когда я развернул ее для запуска базы, функция получит объект Compute вместо JWT, который не имеет учетных данных по умолчанию и метод authorize ().

Подход 2 - используя Firebase Admin SDK & JWT из auth lib - поэтому я попытался использовать JWT lib напрямую (из «google-auth-library»), для которой нужны адрес электронной почты и ключ.Опять же, локально это работало, я использовал admin.credential.applicationDefault (), чтобы получить clientEmail и privateKey, и создать новый JWT, а затем метод authorize () для получения JWT.при развертывании функции admin.credential.applicationDefault () не предоставляет учетные данные и не работает.

Подход 3 - с использованием пользовательского токена SDK администратора - Я также пытался использовать Firebase Admin SDK для создания пользовательского токена ('admin.auth (). CreateCustomToken') и предоставления также «AdditionalClaims», но с этим JWT я не могу получить доступ к IaP, вероятно, потому что администраторSDK имеет постоянную область действия «google.identity.identitytoolkit.v1.IdentityToolkit», и мне нужно создать токен с «target_audience».

Я предполагаю, что если я разверну свой файл credentials.json с функциейэто сработает, но, похоже, это не лучшая практика, и я не знаю, обеспечено ли это.Очевидно, что функция имеет доступ к этим учетным данным, я просто не могу найти способ ее получить.

Может кто-нибудь предложить решение вышеуказанных проблем или предложить другой подход, который будет работать?

Спасибо.

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