如何根据Cognito User Pool(或DynamoDB)中的用户属性实现授权?

时间:2017-11-08 15:14:30

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

我相对较新的AWS,但阅读了大量的文档,无法找到我需要的东西。

我正在尝试实施用户付费订阅的身份验证,并根据他们是否已付款,他们可以访问S3存储桶和项目。

我尝试将API网关与Cognito授权程序一起使用,但我不知道如果用户付费(例如在DynamoDB中查找),如何添加检查。有没有办法向Cognito授权人添加自定义授权逻辑?如果没有,是否仍然可以将Cognito用户池与自定义授权器一起使用?最重要的是,你将如何实现整个事情?

我愿意接受建议。

1 个答案:

答案 0 :(得分:2)

我找到了我要找的东西。

我添加了自定义用户属性subscribed。然后,使用blueprint for custom authorizer for Amazon Cognito User Pools创建了一个lambda函数,我将其用作自定义授权程序。我修改了代码,以便我也提取自定义属性subscribed(前缀为custom:,因此它变为custom:subscribed)并检查它是否设置为true。我将蓝图上传到lambda函数并将其设置为我需要的端点和方法的授权者。

为了更新我使用CognitoIdentityServiceProvider. adminUpdateUserAttributes的标志,我在用户成功付款后调用lambda中的自定义位置(或删除cron jobs订阅以检查它是否有效)。

文章:

https://aws.amazon.com/blogs/mobile/integrating-amazon-cognito-user-pools-with-api-gateway/ https://aws.amazon.com/blogs/compute/author/