Blog
Mert Özen's blog posts on software development, backend, frontend, and DevOps.
Passkeys 1: How WebAuthn and FIDO2 Work: RP ID, Challenge, Attestation and Assertion
A passkey resists phishing because the browser uses the credential only on origins of its registered RP ID, and the signature covers the clientDataJSON that carries the origin and the challenge. We decode real attestation and assertion data captured in the Bookstore lab with CBOR, verify the signature by hand, and explain the UV, BE and BS flags, synced versus device-bound passkeys and account recovery design.
Passkeys 2: Passkey Registration and Passwordless Sign-in with ASP.NET Core Identity 10 and an Angular Client
ASP.NET Core Identity 10 ships passkey registration and passwordless sign-in through SignInManager's MakePasskeyCreationOptionsAsync, PerformPasskeyAttestationAsync and PasskeySignInAsync; but with an empty ServerDomain the RP ID comes from the Host header, and a passkey sign-in writes pwd as amr. We build the Angular client, conditional UI and an end-to-end test with headless Chrome's virtual authenticator.