public async Task <IActionResult> Register(DeviceRegistration model) { // initalise registration process var challenge = await _fido.InitiateRegistration(User.Identity.Name, model.DeviceName); // challenge the device return(View(challenge.ToBase64Dto())); }
public async Task <IActionResult> OnPostAddKeyAsync() { // Creates the required fields for the `publicKeyCredentialCreationOptions` which are: // Base64Challenge, RelyingPartyId & UserId var challenge = (await _fido.InitiateRegistration(User.Identity.Name, Input.DeviceName)).ToBase64Dto(); // could use: user.Email TempData.Set("KeyChallenge", challenge); // Complex data, cannot use: TempData["KeyChallenge"] = challenge; return(RedirectToPage("./AddSecurityKey")); }
public async Task <IActionResult> Register(RegistrationModel model) { var challenge = await _fido.InitiateRegistration(User.Identity.Name, model.DeviceName); var viewModel = new RegistrationViewModel { FidoRegistrationChallenge = challenge.ToBase64Dto() }; var nonce = GeneratorNonce(); viewModel.Nonce = nonce; return(View(viewModel)); }
public async Task <IActionResult> Register(Registration model) { if (ModelState.IsValid) { var user = new IdentityUser { UserName = model.Email, Email = model.Email }; var result = await _userManager.CreateAsync(user); if (result.Succeeded) { _logger.LogInformation("User created a new account with password."); var code = await _userManager.GenerateEmailConfirmationTokenAsync(user); code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code)); var callbackUrl = Url.Page( "/Account/ConfirmEmail", pageHandler: null, values: new { area = "Identity", userId = user.Id, code = code, returnUrl = "~/" }, protocol: Request.Scheme); await _emailSender.SendEmailAsync(model.Email, "Confirm your email", $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>."); if (_userManager.Options.SignIn.RequireConfirmedAccount) { return(RedirectToPage("RegisterConfirmation", new { email = model.Email, returnUrl = "~/" })); } else { // initalise registration process var challenge = await _fido.InitiateRegistration(model.Email, model.DeviceName); // challenge the device return(View(challenge.ToBase64Dto())); } } if (result.Errors.Count() != 0) { ModelState.AddModelError(string.Empty, "Unable to create user"); } } return(View("StartRegistration", model)); }
public async Task <IActionResult> OnPostAddKeyAsync() { /* * var user = await _userManager.GetUserAsync(User); * if (user is null) * return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'."); * * //var userId = await _userManager.GetUserIdAsync(user); */ // Creates the required fields for the `publicKeyCredentialCreationOptions` which are: // Base64Challenge, RelyingPartyId & UserId var challenge = await _fido.InitiateRegistration(User.Identity.Name, Input.DeviceName); // could use: user.Email TempData.Set("KeyChallenge", challenge); // Complex data, cannot use: TempData["KeyChallenge"] = challenge; return(RedirectToPage("./AddSecurityKey")); }
public async Task <IActionResult> Register(RegistrationModel model) { var challenge = await fido.InitiateRegistration(model.UserId, model.DeviceName); return(View(challenge)); }
public async Task <IActionResult> FidoRegistration(FidoRegistrationModel model) { var challenge = await fido.InitiateRegistration(model.UserId, model.DeviceName); return(View(challenge.ToBase64Dto())); }