Angular + Google Identity Platform Multi-Tenancy

标签 angular firebase google-identity

我有一个 Angular 应用,当前使用 Firebase 身份验证和 Firebase 托管。我正在考虑迁移到具有 Multi-Tenancy 功能的 Google Identity Platform。在这种情况下,必须将租户 ID 传递给 Angular 应用程序中的 auth 对象。

我的问题是我们如何动态找到合适的租户 ID。如果我们在 Angular 应用中使用子域名或路径来区分租户,则需要将这些易于理解的名称映射到 Google Identity Platform 租户 ID。例如,子域可能是:

tenantname.mysite.com

但是租户 ID 会类似于

tenantname+some_random_string

鉴于用户尚未登录,因此我们无法使用例如经过身份验证的 API 调用,还是具有 Firebase 安全规则的数据库上的 map ?

Google 文档建议允许用户从列表中进行选择,但该解决方案对我们不起作用。

最佳答案

简短的回答是,不,您必须指定租户才能对用户进行身份验证。平衡安全性和用户友好性的一种方法是两阶段方法:

  1. 维护用户到租户的映射,每当在租户中添加、修改或删除用户时,该映射都会更新。使用asynchronous triggers管理此并存储电子邮件、租户 ID 和状态(启用/禁用)。

  2. 在 Cloud Run 上创建一个简单的安全 REST API 端点,用于返回与该电子邮件关联的一个或多个租户。

登录流程与 Google 自己的身份验证流程非常相似:

  1. 您的登录表单将有一个电子邮件地址字段。用户输入他们的电子邮件地址并提交表单。

  2. 电子邮件地址将发送到返回与其关联的一个或多个租户的 API 端点。

  3. 出现密码输入字段,用户完成针对正确租户的身份验证过程。如果出现多个租户,他们必须选择所需的租户。

关于Angular + Google Identity Platform Multi-Tenancy ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69196194/

相关文章:

javascript - mustache 式数据绑定(bind)的通用名称是什么?

java - 如何在删除 Firebase 中的行后刷新 Recyclerview 适配器中的数据

google-cloud-platform - Google Identity Platform 第三方访问?

javascript - 检查任何对象的 'undefined' 或 'null'

javascript - 日期以奇怪的方式显示 Angular 6

javascript - 使用 Firebase 身份验证时为 "This domain is not authorized"

javascript - Firebase Web 代码实验室 : missing app configuration value "appId"

javascript - 谷歌一键注册总是返回没有可用的凭据

swift - 如果 FUIAuth 处理失败,为什么 Google 示例代码会退回到 GIDSignIn 处理?

mongodb - 在 Angular 4 中使用 mongodb-stitch 库