【发布时间】: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