背景
我有一个具有多个合作伙伴的白标应用程序,每个合作伙伴都可以创建多个“网络应用程序”。每个网络应用程序都有自己的“身份验证数据库”。例如:合作伙伴创建了一个 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 以编程方式设置具有多租户功能的社交提供商吗?
我相信一种方法是使用 Identity Platform API:
您只需找到要添加的受支持 IDP 的参数。
您可以在此处找到受支持的 IDP 列表:
https://cloud.google.com/identity-platform/docs/reference/rest/v2/defaultSupportedIdps/list
我还必须在 Identity Platform 的一个项目中添加 Google 提供商(我相信它与 Firebase 共享相同的 API)。
步骤如下:
您可以在这里找到参考: 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"}
您应该在请求正文中提供以下字段:
name
:对应步骤 1 中的 idp_id
之一client_id
:您的 OAuth 应用程序的客户端 ID client_secret
:OAuth 应用程序的客户端密钥enabled
:true
如果您想启用提供程序就是这样。您应该能够在租户的
Providers
选项卡中看到新创建的提供商。