protected void Unnamed1_Click(object sender, EventArgs e) { tfa = new TwoFactorAuth(WWWVars.SiteName); Accounts useracc = null; string userid = (string)Session["userid"]; using (VendingModelContainer dc = new VendingModelContainer()) { var useraccs = dc.Set <Accounts>(); useracc = useraccs.First(x => x.UserID == userid); } if (useracc.TOTPSecret != "" && totp.Text != null) { if (tfa.VerifyCode(useracc.TOTPSecret, totp.Text)) { Session["userid"] = ""; FormsAuthentication.RedirectFromLoginPage(useracc.UserID, false); Logger.AccountLog(Request.UserHostAddress, "Доступ предоставлен", "Введен правильный одноразовый код", useracc.ID); Logger.SystemLog(Request.UserHostAddress, "Доступ в систему предоставлен", useracc.UserID, "Server"); } else { totpmsg.Text = "Неверный одноразовый пароль"; loginbox.Visible = false; totpbox.Visible = true; Logger.AccountLog(Request.UserHostAddress, "Доступ запрещен", "Введен неправильный одноразовый код", useracc.ID); Logger.SystemLog(Request.UserHostAddress, "Ошибка: неверный одноразовый код", useracc.UserID, "Server"); } } }
protected void Page_Load(object sender, EventArgs e) { Accounts useracc = null; using (VendingModelContainer dc = new VendingModelContainer()) { var useraccs = dc.Set <Accounts>(); useracc = useraccs.First(x => x.UserID == User.Identity.Name); } if (IsPostBack) { return; } if (useracc.TOTPSecret == "") { tfa = new TwoFactorAuth(WWWVars.SiteName); string secret = tfa.CreateSecret(160); totps.ImageUrl = tfa.GetQrCodeImageAsDataUri(User.Identity.Name, secret, 200); Session["totps"] = secret; twofasetupcompletebox.Visible = false; } else { twofasetupcompletebox.Visible = true; twofasetupbox.Visible = false; } }
protected void Button1_Click(object sender, EventArgs e) { byte[] HashedPsssword = new byte[] { }; string passhash = ""; using (VendingModelContainer dc = new VendingModelContainer()) { try { var useraccs = dc.Set <Accounts>(); string userid = Request.Form["userid"]; string userpass = Request.Form["userpass"]; SHA512 shaM = new SHA512Managed(); HashedPsssword = shaM.ComputeHash(Encoding.UTF8.GetBytes(Request.Form["userpass"])); passhash = Convert.ToBase64String(HashedPsssword); cp3.ValidateCaptcha(captchatext.Text); captchatext.Text = ""; if (!cp3.UserValidated) { loginmsg.Text = "Введено некорректное значение числа с картинки"; Logger.AccountLog(Request.UserHostAddress, "Введено некорректное значение числа с картинки", "", -1); Logger.SystemLog(Request.UserHostAddress, "Ошибка: неверное значение числа с картинки", userid, "Server"); return; } Accounts useracc = useraccs.First(x => x.UserID == userid && x.PasswordHash == passhash && x.Valid && !x.Suspended); Logger.AccountLog(Request.UserHostAddress, "Введены верные учетные данные", "", useracc.ID); Logger.SystemLog(Request.UserHostAddress, "Введены верные учетные данные", useracc.UserID, "Server"); if (useracc.TOTPSecret != "") { Session["userid"] = userid; loginbox.Visible = false; totpbox.Visible = true; totp.Focus(); } else { FormsAuthentication.RedirectFromLoginPage(useracc.UserID, false); } } catch { loginmsg.Text = "Учетная запись не найдена или неактивна, либо введены неверные данные"; Logger.SystemLog(Request.UserHostAddress, "Ошибка: неверные учетные данные", (string)Session["userid"], "Server"); } } }
protected void Button1_Click(object sender, EventArgs e) { tfa = new TwoFactorAuth(WWWVars.SiteName); string totpsecret = ""; Accounts useracc = null; using (VendingModelContainer dc = new VendingModelContainer()) { var useraccs = dc.Set <Accounts>(); useracc = useraccs.First(x => x.UserID == User.Identity.Name); } totpsecret = (string)Session["totps"]; if (totpsecret != "" && (string)Request.Form["totp"] != null) { if (tfa.VerifyCode(totpsecret, (string)Request.Form["totp"])) { using (VendingModelContainer dc = new VendingModelContainer()) { try { var useraccs = dc.Set <Accounts>(); Accounts useracc2 = useraccs.First(x => x.UserID == User.Identity.Name); useracc2.TOTPSecret = (string)Session["totps"]; Session["totps"] = ""; dc.SaveChanges(); twofasetupbox.Visible = false; twofasetupcompletebox.Visible = true; Logger.AccountLog(Request.UserHostAddress, "Завершена настройка двухфакторной авторизации", "", useracc2.ID); Logger.SystemLog(Request.UserHostAddress, "Пользователь настроил двухфакторную авторизацию", useracc2.UserID, "Server"); } catch (Exception ex) { totpmsg.Text = "Произошла ошибка, попробуйте еще раз!"; Logger.SystemLog(Request.UserHostAddress, "Ошибка: " + ex.Message, ex.InnerException?.Message, User.Identity.Name); } } } else { totpmsg.Text = "Неверный одноразовый пароль!"; } } }