Ejemplo n.º 1
0
    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");
            }
        }
    }
Ejemplo n.º 2
0
    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;
        }
    }
Ejemplo n.º 3
0
    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");
            }
        }
    }
Ejemplo n.º 4
0
    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 = "Неверный одноразовый пароль!";
            }
        }
    }