【问题标题】:Is it possible to initialize the Firebase Admin SDK with an impersonated service account?是否可以使用模拟服务帐户初始化 Firebase Admin SDK?
【发布时间】:2021-10-24 15:52:54
【问题描述】:

我正在尝试构建一个系统,通过模拟一个有权访问该项目的 Firestore 数据库的服务帐户,使用生成短期访问令牌而不是服务帐户密钥来访问另一个 Google Cloud 项目中的 Firestore 数据库更安全的集成。当我尝试使用这种凭证时,我收到以下错误:

必须使用证书凭据或应用程序默认凭据初始化 SDK 才能使用 Cloud Firestore API。

我想知道我是否在这里遗漏了什么,因为在我看来,使用假冒帐户访问 Firestore 是不可能的。

谢谢!

【问题讨论】:

    标签: firebase google-cloud-firestore service-accounts


    【解决方案1】:

    是的,可以使用模拟服务帐号初始化 Firebase Admin SDK。 应遵循以下步骤:

    1. 使用管理员 SDK 和服务帐户初始化 Firebase 应用后端:
        admin.initializeApp({ 
               credential: admin.credential.cert(service_account_json), 
              })
    
    1. 为您要模拟的用户获取身份验证令牌:
    
        const userId = "[impersonating user uid string]" 
        const token = await admin.auth().createCustomToken(userId)
    
    1. 使用前端 Firebase SDK 对用户进行身份验证:
        const token = "[token string obtained in step 2]" 
        firebase.auth().signInWithCustomToken(token)
    

    【讨论】:

    • 这将使用模拟帐户对前端 SDK 进行身份验证。我想验证 admin SDK,特别是 cloud firestore。
    • Admin SDK 还提供了一个凭据,允许您使用 Google OAuth2 刷新令牌进行身份验证。注意事项:不支持 OAuth 2.0 刷新令牌连接到 Cloud Firestore。更多细节可以在firebase.google.com/docs/admin/setup#java_2中找到
    猜你喜欢
    • 2021-03-12
    • 1970-01-01
    • 2018-05-23
    • 2021-07-19
    • 2019-01-15
    • 2020-09-11
    • 2021-10-13
    • 1970-01-01
    • 2018-10-30
    相关资源
    最近更新 更多