示例#1
0
 public VerifyUserOTPResponse VerifyUserOTP(VerifyUserOTP userOTP)
 {
     using (Task <VerifyUserOTPResponse> runner = VerifyUserOTPAsync(userOTP))
     {
         return(runner.Result);
     }
 }
示例#2
0
        /// <summary>
        /// Verifies a registered users OTP code
        /// </summary>
        /// <param name="userOTP">User details including OTP</param>
        /// <returns>VerifyUserOTPResponse</returns>
        public async Task <VerifyUserOTPResponse> VerifyUserOTPAsync(VerifyUserOTP userOTP)
        {
            if (!string.IsNullOrEmpty(DirectoryName) && string.IsNullOrEmpty(userOTP.DirectoryName))
            {
                userOTP.DirectoryName = DirectoryName;
            }

            var jsonString = JsonSerializer(userOTP);

            using (var client = CreateClient(jsonString))
            {
                var content = new StringContent(jsonString, Encoding.UTF8, "application/json");
                var result  = await client.PostAsync("api/ApplicationAPI/VerifyUserOTP", content);

                var stringResponse = await result.Content.ReadAsStringAsync();

                try
                {
                    var    response = JsonDeserialize <VerifyUserOTPResponse>(stringResponse);
                    string userID   = userOTP.Username;
                    if (VerifySignature(response.SignedResponse, response.RandomToken, userID, response.State.ToString(), response.SignedTime))
                    {
                        return(response);
                    }
                    else
                    {
                        return(new Models.VerifyUserOTPResponse
                        {
                            State = UserAuthenticatorStateEnum.INVALID
                        });
                    }
                }catch (Exception e)
                {
                    return(new Models.VerifyUserOTPResponse
                    {
                        State = UserAuthenticatorStateEnum.INVALID
                    });
                }
            }
        }