在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中的错误?
答案 0 :(得分:0)
在刷新令牌流中,用户名不是必需参数,因为刷新令牌可以直接与首先发出令牌的给定用户相关联。例如,您可以使用AWS CLI测试此行为,并仅传递刷新令牌。