示例#1
0
        public async Task <ActionResult> RequestPasswordReset(string Username)
        {
            CognitoInit awsInit = new CognitoInit();

            try
            {
                await awsInit.Client.ForgotPasswordAsync(new ForgotPasswordRequest()
                {
                    ClientId = awsInit.ClientId, Username = "******"
                });
            }
            catch (Exception e)
            {
                ViewBag.LoginStatus = e.Message;
                return(RedirectToAction("Home"));
            }
            ViewBag.Status = "A confirmation code was sent to you re mail";
            return(View());
        }
示例#2
0
        public async Task <ActionResult> ConfirmForgotPassword(ConfirmResetPassword model)
        {
            CognitoInit awsInit = new CognitoInit();

            try
            {
                var result = await awsInit.Client.ConfirmForgotPasswordAsync(new ConfirmForgotPasswordRequest { ClientId = awsInit.ClientId, Username = model.Username, Password = model.Password, ConfirmationCode = model.VerificationCode });

                if (result.HttpStatusCode == System.Net.HttpStatusCode.OK)
                {
                    ViewBag.Status = "You re password has been changed";
                }
            }
            catch (Exception e)
            {
                ViewBag.LoginStatus = e.Message;
                return(RedirectToAction("Home"));
            }

            return(RedirectToAction("Home"));
        }
示例#3
0
        /// <summary>
        /// Try to login to aws using cognito
        /// If user  has not changed the password then he will be redirected to password change
        /// </summary>
        /// <param name="username"></param>
        /// <param name="password"></param>
        /// <param name="newPassword"></param>
        /// <returns></returns>
        private async Task <string> LoginUserAsync(string username, string password, string newPassword = null)
        {
            var a = FallbackRegionFactory.GetRegionEndpoint();

            CognitoInit awsInit = new CognitoInit();

            CognitoUserPool        userPool    = new CognitoUserPool(awsInit.PoolId, awsInit.ClientId, awsInit.Client);
            CognitoUser            user        = new CognitoUser(username, awsInit.ClientId, userPool, awsInit.Client);
            InitiateSrpAuthRequest authRequest = new InitiateSrpAuthRequest()
            {
                Password = password
            };

            try
            {
                AuthFlowResponse authResponse = await user.StartWithSrpAuthAsync(authRequest).ConfigureAwait(false);

                if (authResponse.ChallengeName != null && authResponse.ChallengeName.ToString().Equals(ChallengeNameType.NEW_PASSWORD_REQUIRED, StringComparison.OrdinalIgnoreCase))
                {
                    //This case is when a user is created by admin form portal
                    if (String.IsNullOrWhiteSpace(newPassword))
                    {
                        authResponse = await user.RespondToNewPasswordRequiredAsync(new RespondToNewPasswordRequiredRequest { SessionID = authResponse.SessionID, NewPassword = "******" });
                    }
                    return(ChallengeNameType.NEW_PASSWORD_REQUIRED);
                }
                if (String.IsNullOrWhiteSpace(authResponse.ChallengeName))
                {
                    // GetCredentials(authResponse.AuthenticationResult);
                    return(authResponse.AuthenticationResult.IdToken);
                }
            }
            catch (Exception e)
            {
                return(e.Message);
            }
            return("Login didn't succeded!");
        }
示例#4
0
        public async Task <ActionResult> SignUp(FormCollection collection)
        {
            //TODO : server and client validation on this fields
            string username = Convert.ToString(collection["username"]);
            string passWord = Convert.ToString(collection["pass"]);
            string email    = Convert.ToString(collection["email"]);

            CognitoInit awsInit = new CognitoInit();

            try
            {
                SignUpRequest signUpRequest = new SignUpRequest()
                {
                    ClientId = awsInit.ClientId,
                    Password = passWord,
                    Username = username
                };
                AttributeType emailAttribute = new AttributeType()
                {
                    Name  = "email",
                    Value = email
                };
                signUpRequest.UserAttributes.Add(emailAttribute);

                var signUpResult = await awsInit.Client.SignUpAsync(signUpRequest);
            }
            catch (Exception ex)
            {
                string message = ex.Message;
                ViewBag.SignInStatus = $"Sign up error: {ex.Message}";
                return(View("Index"));
            }

            ViewBag.LoginStatus = "Your accouant has been created!";
            return(RedirectToAction("Home"));
        }