aws cognito刷新令牌未验证用户名

时间:2017-11-22 23:24:55

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

在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中的错误?

1 个答案:

答案 0 :(得分:0)

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