//END TWO FACTOR AUTHENTICATION //TOTP CONFIGURATION/SETUP public async Task <IActionResult> SetUpTotp(TotpData model) { User user = await userManager.GetUserAsync(HttpContext.User); if (user == null) { user = await userManager.FindByIdAsync(HttpContext.Session.GetString("Id")); } if (user.TotpConfigured == false) { HttpContext.Session.SetString("Id", user.Id); string randomKey = RandomString(25); var totpSetupGenerator = new TotpSetupGenerator(); var totpSetup = totpSetupGenerator.Generate("SportsAdministrationApp", user.Name, randomKey, 300, 300); string qrCodeImageUrl = totpSetup.QrCodeImage; string manualEntrySetupCode = totpSetup.ManualSetupKey; user.QrCodeUrl = qrCodeImageUrl; user.TotpSetupCode = manualEntrySetupCode; user.randomKey = randomKey; user.TotpConfigured = true; } //to pass data into View TotpData dta = new TotpData { TotpSetupCode = user.TotpSetupCode, QrCodeUrl = user.QrCodeUrl }; model.TotpSetupCode = user.TotpSetupCode; model.QrCodeUrl = user.QrCodeUrl; await userManager.UpdateAsync(user); return(View(dta)); }
public override void Create(Manager entity, out ExcutedResult result) { entity.Id = Guid.NewGuid(); entity.Salt = CodeHelper.GenerateStrNum(); var securtyKey = entity.Id + entity.Salt; var setupGenerator = new TotpSetupGenerator(); var totpSetup = setupGenerator.Generate("Ngk", entity.Account, securtyKey); entity.Pwd = GetHashPwd(DefaultPassword, entity.Salt); entity.State = (int)EnumState.Normal; entity.CreateTime = DateTime.UtcNow; base.Create(entity, out result); if (result.Status == EnumStatus.Success) { result.Data = totpSetup; } }
public TotpSetupGeneratorTests() { this.totpSetupGenerator = new TotpSetupGenerator(); }