токен обновления aws cognito не проверяет имя пользователя

В сценарии refresh_token (REFRESH_TOKEN_AUTH AuthFlow) AWS Cognito API, похоже, игнорирует значение, переданное для поля USERNAME. Проверка, похоже, ограничивается синтаксическим анализом регулярного выражения электронной почты. Т.е. API позволяет получать токен доступа для любого ИМЯ ПОЛЬЗОВАТЕЛЯ, такого как [email protected], с токеном обновления [email protected].

Сценарий: Войдите в 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?


person suman j    schedule 22.11.2017    source источник
comment
Определенно не ожидал. Если это подтвердится, сообщите об этом команде AWS, так как это проблема безопасности.   -  person agent420    schedule 29.11.2017


Ответы (1)


В потоке токенов обновления имя пользователя не является обязательным параметром, поскольку токен обновления может быть напрямую связан с тем пользователем, которому токен был выпущен в первую очередь. Вы можете проверить это поведение, используя, например, интерфейс командной строки AWS и передав только токен обновления.

person Ionut Trestian    schedule 04.12.2017
comment
У вас есть источник, на который вы ссылались в связи с этим? Глядя на docs.aws.amazon.com/ ognito-user-identity -pool / latest / Я вижу, что он гласит: «Для REFRESH_TOKEN_AUTH / REFRESH_TOKEN: USERNAME (обязательно), SECRET_HASH (требуется, если клиент приложения настроен с использованием секрета клиента), REFRESH_TOKEN (обязательно), DEVICE_KEY '... т.е. требуется ИМЯ ПОЛЬЗОВАТЕЛЯ, что противоречит вашему ответу. - person Elliveny; 16.12.2017
comment
Я упоминал, что это можно проверить через интерфейс командной строки. Я сделаю внутренний запрос на обновление документации. - person Ionut Trestian; 17.12.2017
comment
Я попробовал и согласен; ИМЯ ПОЛЬЗОВАТЕЛЯ не требуется, поэтому документация требует внимания. - person Elliveny; 17.12.2017