1

问题: 在我的应用程序中,用户是团队的一部分,可以访问团队资源(例如任务)。当用户对任务发出获取请求时,我必须验证该用户是否是拥有该任务的团队的一员。我将如何在我的堆栈中做到这一点?

堆栈: 我有一个 HttpApi 形式的 Api 网关,后面有一堆 Lambda,它们从 DynamoDb 表中获取资源。

当前解决方案: 我已经在路由上配置了 JWT 授权方,并且正在发送我的用户在登录 lambdas 时获得的访问令牌。这包含用户 ID。我使用此 ID 对数据库进行额外调用,以检查它可以访问哪些团队。这意味着每个请求都会额外调用 dynamo db。

更好的解决方案是什么样的? 我习惯于向我的令牌添加授权资源所需的声明(我一直在不同公司运行许多身份服务器),但这似乎不是在这个堆栈中完成的方式。我不确定使用 aws 无服务器堆栈向用户授权用户 ID 以外的信息的“推荐”方式是什么。请指教=)

这是项目来源(正在进行的工作等): https ://github.com/stilren/typescript-cdk-react/tree/master/backend

4

1 回答 1

0

我最终使用“CognitoIdentityServiceProvider”让用户使用访问令牌 - 我猜这是预期的解决方案。这意味着调用 idp 而不是 dynamodb extra 所以仍然不是我真正想要的,但我想我可以缓存响应(甚至可能在网关中?)

这是使用身份验证令牌获取用户的代码 https://github.com/stilren/typescript-cdk-react/commit/72821b0df1373a556c30d5362da5f7cab30a5bd8#diff-3d5ea31f509f495ef777ea9120e4b996

这是授予访问权限以使用 cdk 从 lambda 更新用户属性的完整承诺: https ://github.com/stilren/typescript-cdk-react/commit/72821b0df1373a556c30d5362da5f7cab30a5bd8

于 2020-07-08T13:57:19.560 回答