我正在尝试设计一个具有不同帐户和用户的企业应用程序。将用户映射到帐户ID然后控制其资源访问的最佳方法是什么?假设我将帐户ID存储在dynamo数据库中并使用AppSync访问数据?
例如,用户1属于账户A并且只能通过角度SPA访问账户A的信息。
您可以选择
- 将帐户ID存储在自定义Cognito用户池属性中,或者
- 可以保存用户池的用户ID<->Dynamo DB中的帐户ID映射
无论哪种方式,根据API请求,您现在都可以找到请求者的关联帐户ID,这取决于您存储映射的位置:
- 来自ID令牌的自定义属性
- 向DynamoDB发出请求,以找出给定用户ID的映射(ID或Access令牌中的
sub
字段(
知道与用户关联的帐户ID后,您可以在Appsync解析器(或Lambda授权器,如果可能的话(中做出授权决定。