Gal*_*J93 14 authentication multi-tenant amazon-web-services microservices aws-cognito
我当前的项目是在AWS中,将Cognito和微服务与Lambda结合使用。我们已经使用DDD设计了微服务,并且正在实现基本功能。
但是,业务需要API的用户能够被分类到为其工作的客户公司中,并且只能访问该客户公司的数据以及我们将拥有的任何基于角色的身份验证。
这不是一个完整的多租户解决方案,因为每个用户都将使用相同的网站,但是他们的帐户将与特定的客户端关联。
我所读到的有关在AWS中执行类似操作的所有内容都建议每个客户端使用一个用户角色或池,并在创建用户时将其与用户相关联,但是我们不希望这样做,因为客户端通常由2-3个用户组成,并且有很多客户。就用户池数量而言,这将很快变得难以维持。
我试图使用“常规”方式来思考解决此问题的方法,例如将域服务添加到体系结构中,该域服务专门设计用于通过调用用户微服务来将特定用户的客户端数据添加到每个请求,但这似乎过度复杂。我还考虑过更改体系结构以在每个微服务中包括基本用户和角色信息,但这似乎很麻烦。
我的问题是,是否有任何官方支持的方式以编程方式将数据添加到AWS Cognito配置文件中,并且以这种方式可以在创建账户后由客户端管理员通过前端网站进行更改?即使只是令牌中的clientId字段。
如果不是,那么遇到类似问题的任何人都会推荐什么作为用户池建议的替代方案。
谢谢。
编辑:
我也一直在调查几种方法可以做Cognito此配置文件使用属性,提到这里。似乎这是或多或少地实现我想要实现的目标的方法,但是我仍然希望听到有关替代方案或建议的信息。
Gal*_*J93 21
我们将用于此问题的解决方案是将自定义属性用作Cognito用户设置的一部分。我们将为用户所属的其他属性或组提供文本字段。
可以在以下链接中找到应实现的方式:
通过将此数据作为Cognito凭据的一部分自动传递到每个服务中,我们将能够检查用户是否具有用于访问每个客户端特定数据的有效凭据。
在NodeJS应用程序(有时与Serverless)中如何使用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中用于此处指定的后端身份验证。
| 归档时间: |
|
| 查看次数: |
4264 次 |
| 最近记录: |