【问题标题】:Multi-Tenant Authentication with AWS Cognito使用 AWS Cognito 进行多租户身份验证
【发布时间】:2018-12-19 07:20:51
【问题描述】:

我目前的项目在 AWS 中,使用 Cognito 和 Lambda 的微服务。我们已经使用 DDD 设计了微服务,并且正在实现基本功能。

但是,API 的用户存在业务需求,以便能够归类到他们工作的客户公司,并且只能访问该客户公司的数据以及我们的任何基于角色的身份验证。会有的。

这不是一个完整的多租户解决方案,因为每个用户都将使用同一个网站,但他们的帐户将与特定客户相关联。

我所读到的关于在 AWS 中执行此类操作的所有内容都建议为每个客户端使用一个用户角色或池,并在创建用户时将用户与其关联,但是我们不想这样做,因为客户端通常由 2- 3个用户,有很多客户。就用户池的数量而言,这将很快变得无法维护。

我尝试使用“常规”方法想办法解决这个问题,例如将域服务添加到架构中,该架构专门用于通过调用用户微服务将客户端数据添加到特定用户的每个请求中,但是这似乎过于复杂。我还考虑过更改架构以在每个微服务中包含基本的用户和角色信息,但这似乎很混乱。

我的问题是,是否有任何官方支持的方法可以以编程方式将数据添加到 AWS Cognito 配置文件中,并且在创建帐户后,客户管理员可以通过前端网站对其进行更改?即使它只是令牌中的一个 clientId 字段。

如果不是,那么遇到类似问题的人会推荐什么来替代用户池建议。

谢谢。

编辑:

我也一直在研究使用 Cognito 配置文件上的属性的几种方法,如 here 所述。似乎这是或多或少地完成我想要实现的目标的方法,但我仍然想听听替代方案或建议。

【问题讨论】:

    标签: amazon-web-services authentication microservices multi-tenant aws-cognito


    【解决方案1】:

    我们将用于此问题的解决方案是使用自定义属性作为 Cognito 用户设置的一部分。我们将为用户所属的其他属性或组提供文本字段。

    可以在以下链接中找到应该实现的方式:

    随着这些数据作为 Cognito 凭据的一部分自动传递到每个服务中,我们将能够检查用户是否具有访问特定于每个客户端的数据的有效凭据。

    如何在 NodeJS 应用程序(有时使用无服务器)中使用 Cognito 的示例包括:

    https://serverless-stack.com/chapters/login-with-aws-cognito.html

    https://serverless-stack.com/chapters/add-a-create-note-api.html#configure-the-api-endpoint

    这似乎最容易通过使用aws-amplify 包来实现,该包主要用于前端身份验证,但可以在NodeJS 中用于指定here 的后端身份验证。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-08
    • 1970-01-01
    • 2018-03-14
    • 2016-09-27
    • 2017-01-02
    • 2021-06-23
    • 2018-07-13
    • 1970-01-01
    相关资源
    最近更新 更多