代码之家  ›  专栏  ›  技术社区  ›  GallJ93

使用AWS认知的多租户认证

  •  11
  • GallJ93  · 技术社区  · 8 年前

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

    但是,API用户需要能够被归类到他们工作的客户公司中,并且只能访问该客户公司的数据以及我们将拥有的任何基于角色的身份验证。

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

    我在AWS中读到的所有关于这样做的内容都建议每个客户端使用一个用户角色或池,并在创建用户时将其与之关联,但是我们不希望这样做,因为客户端通常由2-3个用户组成,并且有许多客户端。从用户池的数量来看,这将很快变得无法维护。

    我尝试使用“传统”方法来解决这个问题,比如在体系结构中添加一个域服务,该体系结构专门设计为通过调用用户微服务向特定用户的每个请求添加客户端数据,但这似乎过于复杂。我还考虑改变架构,在每个微服务中包含基本的用户和角色信息,但这看起来很混乱。

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

    如果没有,那么任何经历过类似问题的人会推荐什么作为用户池建议的替代方案。

    谢谢您。

    编辑:

    如前所述,我还研究了几种使用认知特征的方法。 here . 这似乎是我做多少我正在努力实现的事情的方法,但我还是想听听其他选择或建议。

    1 回复  |  直到 8 年前
        1
  •  14
  •   GallJ93    8 年前

    对于这个问题,我们将使用的解决方案是使用自定义属性作为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 .