我目前的项目是在AWS,使用认知和微服务与Lambda。我们使用DDD设计了微服务,目前正在实现基本功能。
然而,API的用户需要能够被分类为他们工作的客户公司,并且只能访问该客户公司的数据以及我们将拥有的任何基于角色的身份验证。
这不是一个完整的多租户解决方案,因为每个用户都将使用同一个网站,但他们的帐户将与一个特定的客户。
我在AWS中所读到的关于这样做的所有文章都建议每个客户端使用一个用户角色或池,并在创建用户时将用户与其关联起来,但是我们不想这样做,因为客户机通常由2-3个用户组成,并且有很多客户端。就用户池的数量而言,这将很快变得不可维护。
我试着用“常规”方法来解决这个问题,比如在体系结构中添加一个域服务,这个体系结构的唯一设计是通过调用用户微服务将客户端数据添加到特定用户的每个请求中,但这似乎过于复杂了。我还考虑过改变体系结构,以便在每个微服务中包含基本的用户和角色信息,但这似乎很麻烦。
我的问题是,是否有任何官方支持的方式,以编程方式将数据添加到AWS认知配置文件中,并且在创建帐户后,客户端管理员可以通过前端网站对此进行更改?即使它只是令牌中的一个clientId字段。
如果没有,那么任何经历过类似问题的人会推荐什么作为用户池建议的替代方案。
谢谢。
编辑:
我还研究了几种方法来实现这一点,就像提到的这里一样,使用认知配置文件上的属性。这似乎是我想要达到的目的,但我还是想听听其他选择或建议。
发布于 2018-07-17 13:48:26
解决此问题的解决方案将是使用自定义属性作为认知用户设置的一部分。我们将为用户所属的其他属性或组提供文本字段。
实现这一目标的方式可在以下链接中找到:
随着这些数据被自动传递到每个服务中,作为认知凭证的一部分,我们将能够检查用户是否具有访问特定于每个客户端的数据的有效凭据。
关于如何在NodeJS应用程序(有时使用Serverless)中使用科尼图的示例包括:
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-放大包来实现,该包主要是为前端身份验证设计的,但可以在NodeJS中作为指定的这里用于后端身份验证。
https://stackoverflow.com/questions/51282283
复制相似问题