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

Ale*_*nov 2 amazon-s3 amazon-web-services amazon-cognito aws-lambda aws-api-gateway

我对 AWS 比较陌生,但阅读了大量文档,但找不到我需要的内容。

我正在尝试实现身份验证,用户支付订阅费用,并根据他们是否付费来访问 S3 存储桶和项目。

我尝试将 API Gateway 与 Cognito 授权者一起使用,但我不知道如何在用户已付款时添加检查(例如通过在 DynamoDB 中查找)。有没有办法向 Cognito 授权者添加自定义授权逻辑?如果没有,是否仍可以将 Cognito 用户池与自定义授权者一起使用?最重要的是,你将如何实施整个事情?

我愿意接受建议。

Ale*_*nov 5

我找到了我要找的东西。

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

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

文章:

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