如何在 Firebase 身份验证中使用多租户以编程方式设置社交提供商

问题描述 投票:0回答:2

背景

我有一个具有多个合作伙伴的白标应用程序,每个合作伙伴都可以创建多个“网络应用程序”。每个网络应用程序都有自己的“身份验证数据库”。例如:合作伙伴创建了一个 Web 应用程序 A 和一个 Web 应用程序 B。如果他的用户在 Web 应用程序 A 中创建了帐户,则他无法登录 Web 应用程序 B,只能在 Web 应用程序 A 中登录。

我会怎样做

我正在使用 firebase 身份验证。我将使用多租户来做到这一点(https://cloud.google.com/identity-platform/docs/multi-tenancy-quickstart)。每个合作伙伴都会有一个与其帐户关联的 Firebase 项目,每个 Web 应用程序将与一个子项目(租户)关联。每个租户都需要设置许多社交登录提供商,例如 facebook 和 google。

问题

我可以通过控制台设置社交提供商。但我找不到如何使用 API 以编程方式做到这一点。我刚刚发现如何通过 api 设置社交提供商而不使用租户 (https://firebase.google.com/docs/projects/provisioning/configure-oauth)

可以使用 API 以编程方式设置具有多租户功能的社交提供商吗?

node.js firebase authentication google-cloud-platform multi-tenant
2个回答
1
投票

我相信一种方法是使用 Identity Platform API:

https://cloud.google.com/identity-platform/docs/reference/rest/v2/projects.tenants.defaultSupportedIdpConfigs/create

您只需找到要添加的受支持 IDP 的参数。

您可以在此处找到受支持的 IDP 列表:

https://cloud.google.com/identity-platform/docs/reference/rest/v2/defaultSupportedIdps/list


0
投票

我还必须在 Identity Platform 的一个项目中添加 Google 提供商(我相信它与 Firebase 共享相同的 API)。

步骤如下:

  1. 列出 Identity Platform 默认支持的身份提供商。

您可以在这里找到参考: https://cloud.google.com/identity-platform/docs/reference/rest/v2/defaultSupportedIdps/list

它应该返回所有可能的身份提供者的 ID。这是我用 Ruby 代码调用它时得到的结果。

{:idp_id=>"apple.com"}
{:idp_id=>"facebook.com"}
{:idp_id=>"gc.apple.com"}
{:idp_id=>"github.com"}
{:idp_id=>"google.com"}
{:idp_id=>"linkedin.com"}
{:idp_id=>"microsoft.com"}
{:idp_id=>"playgames.google.com"}
{:idp_id=>"twitter.com"}
{:idp_id=>"yahoo.com"}
  1. 为您的租户创建身份提供商配置。

您可以在这里找到参考: https://cloud.google.com/identity-platform/docs/reference/rest/v2/projects.tenants.defaultSupportedIdpConfigs/create

您应该在请求正文中提供以下字段

  • name
    :对应步骤 1 中的
    idp_id
    之一
  • client_id
    :您的 OAuth 应用程序的客户端 ID
  • client_secret
    :OAuth 应用程序的客户端密钥
  • enabled
    true
    如果您想启用提供程序

就是这样。您应该能够在租户的

Providers
选项卡中看到新创建的提供商。

© www.soinside.com 2019 - 2024. All rights reserved.