【问题标题】:aws cognito refresh token not validating usernameaws cognito 刷新令牌未验证用户名
【发布时间】:2018-05-06 19:43:40
【问题描述】:

在 refresh_token 场景 (REFRESH_TOKEN_AUTH AuthFlow) 中,AWS Cognito API 似乎忽略了为 USERNAME 字段传递的值。验证似乎仅限于电子邮件正则表达式解析。即允许 API 获取任何 USERNAME 的访问令牌,例如 foo@bar.com,刷新令牌为 user@gmail.com。

场景: 登录到 Cognito:

response = boto3_client.admin_initiate_auth(
            UserPoolId=POOL_ID,
            AuthFlow='ADMIN_NO_SRP_AUTH',
            AuthParameters={
                'USERNAME': username,
                'PASSWORD': password,
            },
            ClientId=CLIENT_ID,
        )

刷新通话
使用登录响应刷新令牌,尝试为其他用户刷新,API 未返回失败。

response = boto3_client.admin_initiate_auth(
            UserPoolId=POOL_ID,
            AuthFlow='REFRESH_TOKEN_AUTH',
            AuthParameters={
                'USERNAME': username, #===== different user
                'REFRESH_TOKEN': refresh_token,
            },
            ClientId=CLIENT_ID,
        )

这在 ADMIN_NO_SRP_AUTH 流中是预期的吗?还是 Cognito API 中的错误?

【问题讨论】:

  • 绝对不会。如果得到确认,请向 AWS 团队提出票证,因为这是一个安全问题

标签: amazon-web-services boto3 amazon-cognito aws-cognito


【解决方案1】:

在刷新令牌流程中,用户名不是必需参数,因为刷新令牌可以直接与最初发出令牌的给定用户相关联。例如,您可以使用 AWS CLI 并仅传递刷新令牌来测试此行为。

【讨论】:

  • 您是否有为此引用的来源?查看docs.aws.amazon.com/cognito-user-identity-pools/latest/… 我看到它声明“对于 REFRESH_TOKEN_AUTH/REFRESH_TOKEN:USERNAME(必需)、SECRET_HASH(如果应用程序客户端配置了客户端密码,则需要)、REFRESH_TOKEN(必需)、DEVICE_KEY”......即需要 USERNAME ,这与您的答案相冲突。
  • 我提到这可以通过 CLI 进行测试。我将提出内部请求以更新文档。
  • 我试过并同意; USERNAME 不是必需的,因此似乎需要注意文档。
猜你喜欢
  • 2017-11-22
  • 2020-08-30
  • 1970-01-01
  • 1970-01-01
  • 2018-03-07
  • 1970-01-01
  • 2017-02-25
  • 2020-10-27
  • 2018-04-03
相关资源
最近更新 更多