问题: 在我的应用程序中,用户是团队的一部分,可以访问团队的资源(例如任务)。当用户向任务发出获取请求时,我必须验证该用户是否是拥有该任务的团队的一部分。我将如何在我的堆栈中做到这一点?
堆栈: 我有一个HttpApi形式的Api网关,后面带有一堆Lambda,可以从DynamoDb表中获取资源。
当前解决方案: 我已经在路由上配置了JWT授权者,并且正在发送用户登录到Lambda时获得的访问令牌。其中包含用户ID。我使用此ID对数据库进行额外的呼叫,以检查其有权访问哪些团队。这意味着每个请求都会额外调用dynamo数据库。
什么样的解决方案会更好? 我习惯于向我的令牌添加授权资源所需的声明(我已经在不同的公司中运行许多身份服务器),但这似乎并不是在此堆栈中完成的。我不确定授权用户使用aws无服务器堆栈的用户ID以外的信息来授权用户的“推荐”方式是什么。请咨询=)
以下是项目来源(正在进行的工作等): https://github.com/stilren/typescript-cdk-react/tree/master/backend
答案 0 :(得分:0)
我最终使用“ CognitoIdentityServiceProvider”来使用户使用访问令牌-我想这是预期的解决方案。这意味着要调用idp而不是dynamodb extra,因此仍然不是我真正想要的,但我想我可以缓存响应(甚至在网关中也可以)
以下是使用auth令牌获取用户的代码 https://github.com/stilren/typescript-cdk-react/commit/72821b0df1373a556c30d5362da5f7cab30a5bd8#diff-3d5ea31f509f495ef777ea9120e4b996
这是完全提交,以授予使用cdk从lambda更新用户属性的权限: https://github.com/stilren/typescript-cdk-react/commit/72821b0df1373a556c30d5362da5f7cab30a5bd8