Program.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. using System.Text;
  2. using Fido2NetLib;
  3. using Fido2NetLib.Objects;
  4. using Microsoft.AspNetCore.Mvc;
  5. using Passwordless;
  6. var builder = WebApplication.CreateBuilder(args);
  7. // Add services to the container.
  8. // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
  9. builder.Services.AddEndpointsApiExplorer();
  10. builder.Services.AddSwaggerGen();
  11. builder.Services.AddFido2(options =>
  12. {
  13. options.ServerDomain = "localhost";
  14. options.ServerName = "FIDO2 Test";
  15. options.Origins = ["http://localhost:5172"];
  16. options.TimestampDriftTolerance = 300000;
  17. });
  18. var app = builder.Build();
  19. // Configure the HTTP request pipeline.
  20. if (app.Environment.IsDevelopment())
  21. {
  22. app.UseSwagger();
  23. app.UseSwaggerUI();
  24. }
  25. app.UseStaticFiles();
  26. app.UseHttpsRedirection();
  27. app.MapGet("/buildCredentialOptions", ([FromQuery] string login, IFido2 fido2) =>
  28. {
  29. var data = File.ReadAllText("./data/test.json");
  30. var loginDisplay = Encoding.UTF8.GetString(Convert.FromBase64String(login));
  31. var loginName = NameTransform.ToFileName(loginDisplay);
  32. var user = new Fido2User
  33. {
  34. DisplayName = loginDisplay,
  35. Id = Convert.FromBase64String(login),
  36. Name = loginName,
  37. };
  38. var authenticatorSelection = new AuthenticatorSelection
  39. {
  40. UserVerification = UserVerificationRequirement.Discouraged,
  41. RequireResidentKey = false,
  42. };
  43. var extensions = new AuthenticationExtensionsClientInputs
  44. {
  45. Extensions = true,
  46. UserVerificationMethod = false,
  47. };
  48. var options = fido2.RequestNewCredential(user, new List<PublicKeyCredentialDescriptor>(), authenticatorSelection, AttestationConveyancePreference.None, extensions);
  49. return options;
  50. })
  51. .WithName("BuildCredentialOptions")
  52. .WithOpenApi();
  53. app.Run();