private AdminInitiateAuthRequest CreateAdminAuthRequest(InitiateAdminNoSrpAuthRequest adminRequest) { AdminInitiateAuthRequest returnRequest = new AdminInitiateAuthRequest() { AuthFlow = AuthFlowType.ADMIN_NO_SRP_AUTH, ClientId = ClientID, UserPoolId = UserPool.PoolID, AuthParameters = new Dictionary <string, string>() { { CognitoConstants.ChlgParamUsername, Username }, { CognitoConstants.ChlgParamPassword, adminRequest.Password } } }; if (Device != null && !string.IsNullOrEmpty(Device.DeviceKey)) { returnRequest.AuthParameters.Add(CognitoConstants.ChlgParamDeviceKey, Device.DeviceKey); } if (!string.IsNullOrEmpty(SecretHash)) { returnRequest.AuthParameters.Add(CognitoConstants.ChlgParamSecretHash, SecretHash); } if (adminRequest.ClientMetadata != null) { returnRequest.ClientMetadata = new Dictionary <string, string>(adminRequest.ClientMetadata); } return(returnRequest); }
/// <summary> /// Initiates the asynchronous ADMIN_NO_SRP_AUTH authentication flow /// </summary> /// <param name="adminAuthRequest">InitiateAdminNoSrpAuthRequest object containing the necessary /// parameters to initiate the ADMIN_NO_SRP_AUTH authentication flow</param> /// <returns>Returns the AuthFlowResponse object that can be used to respond to the next challenge, /// if one exists</returns> public void StartWithAdminNoSrpAuthAsync(InitiateAdminNoSrpAuthRequest adminAuthRequest, AsyncCallback <AuthFlowResponse> callback = null) { AdminInitiateAuthRequest initiateAuthRequest = CreateAdminAuthRequest(adminAuthRequest); Provider.AdminInitiateAuthAsync(initiateAuthRequest, r => { if (r.Exception != null) { callback?.Invoke(new AsyncResult <AuthFlowResponse>(null, r.Exception)); return; } AdminInitiateAuthResponse initiateResponse = r.Response; UpdateSessionIfAuthenticationComplete(initiateResponse.ChallengeName, initiateResponse.AuthenticationResult); callback?.Invoke(new AsyncResult <AuthFlowResponse>(new AuthFlowResponse() { SessionID = initiateResponse.Session, ChallengeName = initiateResponse.ChallengeName, AuthenticationResult = initiateResponse.AuthenticationResult, ChallengeParameters = initiateResponse.ChallengeParameters, ClientMetadata = new Dictionary <string, string>(initiateResponse.ResponseMetadata.Metadata) }, null)); }); }
/// <summary> /// Initiates the asynchronous ADMIN_NO_SRP_AUTH authentication flow /// </summary> /// <param name="adminAuthRequest">InitiateAdminNoSrpAuthRequest object containing the necessary /// parameters to initiate the ADMIN_NO_SRP_AUTH authentication flow</param> /// <returns>Returns the AuthFlowResponse object that can be used to respond to the next challenge, /// if one exists</returns> public async Task <AuthFlowResponse> StartWithAdminNoSrpAuthAsync(InitiateAdminNoSrpAuthRequest adminAuthRequest) { AdminInitiateAuthRequest initiateAuthRequest = CreateAdminAuthRequest(adminAuthRequest); AdminInitiateAuthResponse initiateResponse = await Provider.AdminInitiateAuthAsync(initiateAuthRequest).ConfigureAwait(false); UpdateSessionIfAuthenticationComplete(initiateResponse.ChallengeName, initiateResponse.AuthenticationResult); return(new AuthFlowResponse(initiateResponse.Session, initiateResponse.AuthenticationResult, initiateResponse.ChallengeName, initiateResponse.ChallengeParameters, new Dictionary <string, string>(initiateResponse.ResponseMetadata.Metadata))); }