AWS登录INVALIDPARAMETEREXCEPTION缺少所需参数SRP_A

AWS sign-in InvalidParameterException Missing required parameter SRP_A

本文关键字:参数 SRP 登录 INVALIDPARAMETEREXCEPTION AWS      更新时间:2023-10-16

我想将该语句应用于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生成器。

我该如何解决这个问题。谢谢。

在许多较低级别的SDK中,您需要自己实现SRP auth,如果您在不受信任的设备上,即您无法在其上存储完整的IAM凭据,因此无法使用admin*功能。

我写了一个博客文章,内容涉及在AWS C#SDK中添加SRP,这应该为您提供一个很好的起点,即过程涉及的内容以及您需要采取哪些步骤来完成数学。移植到C 应该不太难,您只需要散列库,例如openssl/hmac。

您的第一个问题是您需要发送一个srp_a值,但是仅此一个就无法解决您的问题,因为您只会返回SRP挑战,所以我将您转介到我的帖子中遍及整个帖子SRP进程。

如果您处于受信任的环境中,即您在自己的服务器上运行您的C 代码,只有您都无法访问,您的客户都没有,并且您不运送C 向任何人代码,然后您可以使用AdminItiatiateAuth方法与Admin_no_srp_auth authentication方法(当您为池创建新的客户ID/秘密ID时,必须启用,这可以允许您以纯文本发送用户名和密码。<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<