AWS Amplify Cognito 中的禁用用户仍然可以访问 API 中的数据

Posted

技术标签:

【中文标题】AWS Amplify Cognito 中的禁用用户仍然可以访问 API 中的数据【英文标题】:Disabled users in AWS Amplify Cognito still can access to data in the API 【发布时间】:2020-09-24 12:25:56 【问题描述】:

Graphql Api 和 Auth 添加到一个全新的项目中。

我转到 Amplify 控制台 -> myapp -> api -> GraphQL API 并单击在 AppSync 中查看。在运行查询部分,我运行如下示例查询:


  listTodos 
    items 
        name
    
  

响应是 UnauthorizedException。这是意料之中的,而且工作正常。

然后,如果我使用 cognito 用户登录,则响应是一些示例 TODOS。这也不错。

如果我转到 Cognito 并禁用用户,我仍然可以运行查询。我期待未经授权或其他事情,而不是实际能够查询我的数据(因为用户被禁用)。

【问题讨论】:

【参考方案1】:

Cognito 访问和 ID 令牌对 one hour from the time they are issued 有效。只要用户的令牌仍然有效且未过期,他们将被授权访问 GraphQL API regardless of the user's existence。

Cognito does not offer the ability to revoke access/ID tokens,尽管可以使用 GlobalSignOut API 调用立即撤销刷新令牌。

此限制的一种解决方法是custom logic,它可以在您的应用程序中实现,以在使用 GraphQL API 发起请求之前验证用户是否存在于用户池中/是否处于有效状态。

【讨论】:

以上是关于AWS Amplify Cognito 中的禁用用户仍然可以访问 API 中的数据的主要内容,如果未能解决你的问题,请参考以下文章

AWS Amplify Cognito 中的禁用用户仍然可以访问 API 中的数据

无法使用 aws-amplify 从 cognito 获取更新的属性及其值

AWS-amplify 在请求中包含 cognito Authorization 标头

AuthError - 错误:未正确配置 Amplify / AWS cognito,React JS

使用 AWS Amplify 和 AWS Cognito 进行数据特定授权

什么是用于在 Cognito 中登录的 AWS 开发工具包库(从后端不使用 Amplify)?