我试图按照本指南authenticating_from_a_service_account(本指南没有与firebase函数相关)和其他人,以便允许firebase函数访问IaP背后的GCE上的另一个应用程序/ API,这需要授权的JWT . 我've tried few methods and approaches which all failed and doesn'工作 .

Approach 1 - 使用带有'auth.getClient()'的googleapis auth lib - 我设法在服务函数时让它在本地工作,本地此方法返回JWT对象,我可以提供'additionalClaims'(带有'target_audience'属性),然后使用提供JWT的'auth.authorize()'(这可以工作)本地) . 但是当我将它部署到firebase时,该函数得到一个Compute对象,而不是JWT,它没有't have the default credentials and ' authorize()'方法 .

Approach 2 - 使用auth lib中的firebase admin SDK和JWT - 所以我尝试直接使用JWT lib(来自'google-auth-library'),这需要电子邮件和密钥 . 再次,在本地工作,我使用'admin.credential.applicationDefault()'获取'clientEmail'和'privateKey'并创建'new JWT'然后使用'authorize()'方法获取JWT . 在部署函数时'admin.credential.applicationDefault()'没有't provide the credentials and it doesn'工作 .

Approach 3 - 使用管理员SDK自定义令牌 - 我还尝试使用firebase管理员SDK创建自定义令牌('admin.auth().createCustomToken')并提供'additionalClaims'但是使用此JWT我可以't access IaP, probably because the admin SDK has a const scope of ' google.identity.identitytoolkit.v1.IdentityToolkit ' and I need to create token with 'target_audience' .

我想如果我将部署我的credentials.json文件与它的功能,它将工作,但它似乎不是最好的做法,我不知道它是否安全 . 显然,该函数可以访问这些凭据,但我找不到获取它的方法 .

任何人都可以提供上述问题的解决方案或建议一种不同的方法吗?

谢谢 .