自定义属性多租户最佳实践 - Amazon Cognito
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

自定义属性多租户最佳实践

Amazon Cognito 支持使用您选择的名称的自定义属性。自定义属性很有用的一种场景是,它们区分共享用户池中用户的租约。当你为用户分配类似的属性的值时custom:tenantID,你的应用程序可以相应地分配对租户特定资源的访问权限。定义租户 ID 的自定义属性对应用程序客户端来说应该是不可变的或只读的。

下图显示租户共享应用程序客户端和用户池,用户池中的自定义属性表示他们所属的租户。

many-to-one 多租户模型示意图,其中每个用户在共享用户池中都有自己的租户用户属性。

当自定义属性决定租赁时,您可以分发单个应用程序或登录 URL。用户登录后,您的应用程序可以处理custom:tenantID索赔,确定要加载哪些资产、要应用的品牌以及要显示的功能。要根据用户属性做出高级访问控制决策,请在 Amazon Verified Permissions 中将您的用户池设置为身份提供商,然后根据身份或访问令牌的内容生成访问决策。

何时实施自定义属性多租户

当租赁是表面层面时。租户属性可以为品牌和布局结果做出贡献。当你想在租户之间实现显著隔离时,自定义属性并不是最佳选择。必须在用户池或应用程序客户端级别配置的租户之间的任何区别(例如 MFA 或托管 UI 品牌)都要求您以自定义属性无法提供的方式在租户之间进行区分。借助身份池,您甚至可以从用户 ID 令牌中的自定义属性声明中选择 IAM 角色。

工作量水平

由于自定义属性多租户将基于租户的授权决策的职责转移到您的应用程序上,因此工作量往往很高。如果您已经精通解析 OIDC 声明的客户端配置或 Amazon Verified Permissions,则这种方法可能需要最少的工作量。