【问题标题】:How to implement authorization based on user property from Cognito User Pool (or DynamoDB)?如何基于来自 Cognito 用户池(或 DynamoDB)的用户属性实现授权?
【发布时间】:2018-04-21 08:22:17
【问题描述】:

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

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

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

我愿意接受建议。

【问题讨论】:

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


    【解决方案1】:

    我找到了我要找的东西。

    我添加了一个自定义用户属性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/

    【讨论】:

    • 感谢您发布此信息。非常适合 Cognito 开发人员。
    • 非常感谢!对 Cognito 开发人员非常有帮助。如果您有访问自定义属性的代码 sn-ps,请分享。
    猜你喜欢
    • 2017-07-19
    • 1970-01-01
    • 2019-04-27
    • 2022-11-10
    • 2019-01-24
    • 2017-10-25
    • 2021-10-08
    • 2018-11-19
    • 2018-02-26
    相关资源
    最近更新 更多