2017-02-22 7 views
1

Ich möchte diese Aussage für cpp anzuwenden:AWS-Anmelde InvalidParameterException Fehlende erforderlichen Parameter SRP_A

Ich versuchte es cpp zu verabschieden. Ich könnte mich anmelden. Als ich versuchte, unterzeichnen-in, traf ich diese Ausnahme: "InvalidParameterException: Fehlende erforderliche Parameter SRP_A"

Dieser Teil meines Codes ist:

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(); 
    } 

Wie kann ich SRP_A Attribut in den InitiateAuthRequest? Für andere Plattformen (Android, iOS und JS) hat ihre SDK SRP_A Generator wie dort.

Wie kann ich dieses Problem lösen. Vielen Dank.

Antwort

2

In vielen untergeordneten SDKs müssen Sie die SRP-Authentifizierung selbst implementieren, wenn Sie sich auf einem nicht vertrauenswürdigen Gerät befinden, d. H. Sie können keine vollständigen IAM-Anmeldeinformationen darauf speichern und daher die Admin * -Funktionen nicht verwenden.

I wrote a blogpost about adding SRP in the AWS C# SDK was Ihnen einen guten Ausgangspunkt geben sollte, was der Prozess beinhaltet und welche Schritte Sie brauchen, um die Mathematik zu machen. Es sollte nicht allzu schwierig sein, nach C++ zu portieren, Sie brauchen nur Hashing-Bibliotheken wie openssl/hmac.

Ihr erstes Problem hier ist, dass Sie einen SRP_A Wert senden müssen, aber das alleine wird Ihr Problem nicht lösen, da Sie nur eine SRP Abfrage erhalten, also verweise ich Sie auf meinen Beitrag, der durch den gesamter SRP-Prozess.

Wenn Sie sich in einer vertrauenswürdigen Umgebung befinden, dh wenn Sie Ihren C++ - Code auf Ihrem eigenen Server laufen lassen, der nur Ihnen Zugriff hat, keiner Ihrer Kunden, und Sie Ihren C++ Code an niemanden versenden, Dann können Sie die Methoden AdminInitiateAuth mit der Authentifizierungsmethode ADMIN_NO_SRP_AUTH verwenden (die Sie aktivieren müssen, wenn Sie eine neue Client-ID/geheime ID für Ihren Pool erstellen, mit der Sie einfach Benutzername und Kennwort im Nur-Text-Format senden können.

Verwandte Themen