【问题标题】:Aws Cognito: How to authorize a user in a serverless stack using custom attributes?Aws Cognito:如何使用自定义属性在无服务器堆栈中授权用户?
【发布时间】:2020-07-08 21:57:19
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: amazon-web-services aws-lambda aws-api-gateway amazon-cognito lambda-authorizer


    【解决方案1】:

    我最终使用“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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-01
      • 2017-05-30
      • 2018-03-25
      • 2018-10-07
      • 1970-01-01
      • 2020-03-16
      • 1970-01-01
      • 2017-07-19
      相关资源
      最近更新 更多