Вход в AWS InvalidParameterException Отсутствует обязательный параметр SRP_A

Я хочу применить это утверждение для cpp:

Я пытался принять это CPP. Я мог бы подписаться на операцию. Когда я попытался войти, я столкнулся с этим исключением:
«InvalidParameterException: отсутствует обязательный параметр SRP_A»

Это часть моего кода:

    Aws::Map<Aws::String, Aws::String> authParameters;

Aws::Map<Aws::String, Aws::String> authParameters;
authParameters.insert(
std::pair<Aws::String, Aws::String>("USERNAME", "xxxxx"));
authParameters.insert(
std::pair<Aws::String, Aws::String>("PASSWORD", "xxxxx"));

InitiateAuthRequest initiateAuthRequest;
initiateAuthRequest.SetAuthFlow(
Aws::CognitoIdentityProvider::Model::AuthFlowType::USER_SRP_AUTH);
initiateAuthRequest.SetClientId(TEST_APP_CLIENT_ID);
initiateAuthRequest.SetAuthParameters(authParameters);

InitiateAuthOutcome initiateAuthOutcome =
client.InitiateAuth(initiateAuthRequest);
if (initiateAuthOutcome.IsSuccess()) {
qDebug() << "Initiate auth: " << initiateAuthOutcome.IsSuccess();
} else {
qDebug() << initiateAuthOutcome.GetError().GetExceptionName().c_str()
<< ": " << initiateAuthOutcome.GetError().GetMessage().c_str();
}

Как я могу добавить атрибут SRP_A в InitiateAuthRequest? Для других платформ (android, ios и js) их SDK имеет генератор SRP_A, как там.

Как я могу решить эту проблему. Благодарю.

1

Решение

Во многих низкоуровневых SDK вам необходимо внедрить аутентификацию SRP самостоятельно, если вы используете ненадежное устройство, то есть вы не можете хранить на нем полные учетные данные IAM и, следовательно, не можете использовать функции Admin *.

я написал пост в блоге о добавлении SRP в AWS C # SDK что должно дать вам хорошую отправную точку в том, что включает в себя процесс и какие шаги вам нужно предпринять, чтобы сделать математику. Должно быть не слишком сложно портировать на C ++, вам просто нужны библиотеки хеширования, такие как openssl / hmac.

Ваша первая проблема заключается в том, что вам нужно отправить значение SRP_A, но это само по себе не решит вашу проблему, поскольку вы просто получите ответ на запрос SRP, поэтому я обращаюсь к вам с моим сообщением, которое проходит весь процесс SRP.

Если вы находитесь в доверенной среде, то есть вы выполняете свой код C ++ на своем собственном сервере, который только ты у вас нет доступа ни к одному из ваших клиентов, и вы не отправляете свой код C ++ никому, тогда вы можете использовать AdminInitiateAuth методы с методом аутентификации ADMIN_NO_SRP_AUTH (который необходимо включить при создании нового идентификатора клиента / секретного идентификатора для вашего пула, который позволяет просто отправлять имя пользователя и пароль в виде простого текста.

2

Другие решения

Других решений пока нет …