public async Task <IActionResult> GetChallenge() { try { // List<ServerChallenge> serverRegisterResponse = await _membershipService.GenerateServerChallenges(HttpContext.User.Identity.Name); // ServerChallenge sRR0 = serverRegisterResponse[0]; string requestOrigin = HttpContext.Request.Scheme + "//:" + HttpContext.Request.Host; PublicKeyCredentialCreationOptions options = new PublicKeyCredentialCreationOptions { PublicKeyCredentialRpEntity = "https://localhost:44371", // serverRegisterResponse[0].appId, ChallengeBuffer = "7hochY2r9CW6KDXXsRQjq774Brst1udfOf7HR2nst_Q", // "kslkjf829837kjsldk", //serverRegisterResponse[0].challenge, PublicKeyCredentialUserEntity = HttpContext.User.Identity.Name, AuthenticationExtensionsClientInputs = new Dictionary <string, object>() { // {"AppID",serverRegisterResponse[0].appId }, // {"Version", serverRegisterResponse[0].version} { "AppID", "https://localhost:44371" }, { "Version", "U2F_V2" } } }; EnableWebAuthNViewModel registerModel = new EnableWebAuthNViewModel { jsonData = JsonConvert.SerializeObject(options), AppId = options.PublicKeyCredentialRpEntity, Challenge = options.ChallengeBuffer, Version = (string)options.AuthenticationExtensionsClientInputs["Version"], UserName = HttpContext.User.Identity.Name }; return(new JsonResult(JsonConvert.SerializeObject(registerModel))); } catch (Exception exception) { _logger.LogError(exception.Message); } return(NoContent()); // TODO this is not helpful }
private void RegisterToFido2Client(PublicKeyCredentialCreationOptions publicKeyCredentialCreationOptions) { string Tag = "RegisterToFido2Client"; NativeFido2RegistrationOptions registrationOptions = NativeFido2RegistrationOptions.DefaultOptions; Fido2RegistrationRequest registrationRequest = new Fido2RegistrationRequest(publicKeyCredentialCreationOptions, null); // Call IFido2Client.GetRegistrationIntent to obtain a IFido2Intent instance and start the FIDO client // registration process. fido2Client.GetRegistrationIntent(registrationRequest, registrationOptions, new Fido2IntentCallback { OnSuccessAction = (fido2Intent) => { // Start the FIDO client registration process through Fido2ClientCommon.RegistrationRequest. fido2Intent.LaunchFido2Activity(this, Fido2ClientCommon.RegistrationRequest); }, OnFailureAction = (errorCode, errString) => { log.Error(Tag, $"{GetString(Resource.String.reg_fail)} {errorCode}={errString}"); } }); }
private void OnClickRegistration(object sender, EventArgs e) { string Tag = "OnClickRegistration"; if (!fido2Client.IsSupported) { log.Info(Tag, "FIDO2 is not supported."); return; } IFidoServer fidoServer = new FidoServerSimulator(); if (fidoServer == null) { log.Error(Tag, GetString(Resource.String.connect_server_err)); return; } ServerPublicKeyCredentialCreationOptionsRequest request = GetRegServerPublicKeyCredentialCreationOptionsRequest(); if (request == null) { return; } // Obtain the challenge value and related policy from the FIDO server, and initiate a Fido2RegistrationRequest // request. ServerPublicKeyCredentialCreationOptionsResponse response = fidoServer.GetAttestationOptions(request); if (!ServerStatus.Ok.Equals(response.GetStatus())) { log.Error(Tag, GetString(Resource.String.reg_fail) + response.GetErrorMessage()); } PublicKeyCredentialCreationOptions publicKeyCredentialCreationOptions = ServerUtils.ConvertToPublicKeyCredentialCreationOptions(fido2Client, response); RegisterToFido2Client(publicKeyCredentialCreationOptions); }
public static string Write(PublicKeyCredentialCreationOptions options) { return(JsonConvert.SerializeObject(options)); }