繁体   English   中英

Angular + Google Identity Platform 多租户

[英]Angular + Google Identity Platform multi-tenancy

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

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

tenantname.mysite.com

但租户 ID 将类似于

tenantname+some_random_string

鉴于用户尚未登录,因此我们不能使用例如经过身份验证的 API 调用或具有 Firebase 安全规则的数据库上的映射,有没有办法安全地执行此操作?

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

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM