Roy*_*ron 6 firebase google-cloud-platform terraform firebase-authentication
我们正在过渡到使用 Terraform 在 Google Compute 上创建我们的架构,其中一部分使用 Firebase 作为前端。到目前为止,我已经设法让这一切正常运行,但在 Firebase Auth 上遇到了障碍。本质上,我想以编程方式允许对 Firbase 项目进行“电子邮件/密码”身份验证。
以上显示了您在 UI 控制台中找到设置的位置,但我希望能够通过 API/CLI 执行此操作,并设置“授权域”。
是的,截至2022 年 11 月,现在可以使用Terraform或gcloud CLI和一些脚本编写。这两种方法都使用REST Identity Toolkit API。
\n如果使用 Terraform:您的配置文件需要指定一个google_identity_platform_project_default_config
资源:它的文档可以在此处找到。例如 \xe2\x80\x93 假设您已经声明了一个google_project
名为 的资源my_project
,您可以google_identity_platform_project_default_config
按如下方式添加该资源:
resource "google_identity_platform_project_default_config" "myconfig" {\n\n project = google_project.myproject.project_id \n\n sign_in {\n allow_duplicate_emails = false\n\n anonymous {\n enabled = false\n }\n\n email {\n enabled = true\n password_required = false\n }\n }\n}\n
Run Code Online (Sandbox Code Playgroud)\n这将启用电子邮件+密码身份验证,禁止匿名访问,并禁止重复的电子邮件地址。
\n如果使用 gcloud CLI:这会更麻烦。我还没有完全测试它,但它大概相当于 Terraform 在幕后所做的事情。您需要获取服务帐户访问令牌,然后使用 cURL(或类似的工具/API)使用 PATCH 方法(此处的文档)修改 Identity Toolkit 配置,并在“Authorization”标头中提供令牌。
\ngcloud
允许您使用命令获取访问令牌gcloud auth print-access-token
,但根据@DazWilkin的2021 年博客文章1,使用常规人类凭据获取的令牌无法执行必要的 PATCH 操作;您需要使用由具有正确权限的服务帐户支持的令牌。
该博客文章提供了更多详细信息,但大致步骤是:
\n创建一个服务帐户并为其授予正确的权限。(如果您已经拥有适当的服务帐户,则不需要;可以使用 Firebase 控制台或 Terraform 的资源创建此类帐户google_service_account
。)
创建JSON 服务帐户密钥文件。(如果您已经创建了密钥及其 JSON 文件,则不需要。这些 JSON 文件包含一个带有“project_id”、“private_key_id”和“private_key”键的对象,并且与 gets 的文件类型完全相同如果您转到“项目概述”/“项目设置”/“服务帐户”/“生成新的私钥”,则从 Firebase 控制台生成。它们也可以使用 Terraform 的google_service_account_key
资源以编程方式创建。)
允许gcloud
使用服务帐户的权限执行操作,通过运行gcloud
“ auth activate-service-account
”子命令:类似
$ gcloud auth activate-service-account --key-file=/path/to/key-file.json EMAIL_ADDRESS_OF_SERVICE_ACCOUNT\n
Run Code Online (Sandbox Code Playgroud)\n通过运行获取服务帐户的访问令牌gcloud auth print-access-token EMAIL_ADDRESS_OF_SERVICE_ACCOUNT
。
使用 cURL 在 HTTP PATCH 请求的标头中提供该令牌。
\n有关更多详细信息,请参阅博客文章;它涉及修改 Firebase 项目的“授权域”列表,但启用电子邮件/密码身份验证将非常相似。
\n1在这个 stackoverflow 答案中也提到了。
\n 归档时间: |
|
查看次数: |
76 次 |
最近记录: |