Repository navigation
Infer passkey display name from AAGUID - #65343
Merged
Merged
Conversation
MackinnonBuck
requested review from
halter73 and
javiercn
and removed request for
Copilot
February 6, 2026 00:11
javiercn
reviewed
Feb 6, 2026
javiercn
reviewed
Feb 6, 2026
Contributor
There was a problem hiding this comment.
Pull request overview
This PR enhances passkey UX by persisting the authenticator AAGUID during attestation and using it in the Blazor Web App template to infer a friendly default passkey display name (reducing the need for a rename prompt).
Changes:
- Add
Aaguid(byte[]?) toUserPasskeyInfoandIdentityPasskeyData, and extract it during passkey attestation. - Update store/test mappings and spec assertions to round-trip the new
Aaguidfield. - Add template logic to map known AAGUIDs to friendly authenticator names and display inferred names + creation date in the passkeys list.
Reviewed changes
Copilot reviewed 13 out of 13 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| src/ProjectTemplates/Web.ProjectTemplates/content/BlazorWeb-CSharp/BlazorWebCSharp.1/Components/Account/PasskeyAuthenticators.cs | Adds AAGUID→friendly-name mapping and helper methods for display/inference. |
| src/ProjectTemplates/Web.ProjectTemplates/content/BlazorWeb-CSharp/BlazorWebCSharp.1/Components/Account/Pages/Manage/Passkeys.razor | Uses inferred display names and creation dates; auto-assigns a name for known authenticators. |
| src/Identity/test/Shared/PocoModel/PocoUserPasskey.cs | Extends test POCO model with an AAGUID field. |
| src/Identity/test/InMemory.Test/InMemoryStore.cs | Maps AAGUID between POCO and UserPasskeyInfo. |
| src/Identity/samples/IdentitySample.PasskeyUI/InMemoryUserStore.cs | Maps AAGUID between POCO and UserPasskeyInfo in sample store. |
| src/Identity/samples/IdentitySample.PasskeyConformance/InMemoryUserStore.cs | Same as above for conformance sample store. |
| src/Identity/Specification.Tests/src/IdentitySpecificationTestBase.cs | Adds AAGUID to passkey equality assertions. |
| src/Identity/Extensions.Stores/src/PublicAPI.Unshipped.txt | Declares new public API surface for IdentityPasskeyData.Aaguid. |
| src/Identity/Extensions.Stores/src/IdentityPasskeyData.cs | Adds persisted Aaguid property. |
| src/Identity/Extensions.Core/src/UserPasskeyInfo.cs | Adds Aaguid property to passkey model. |
| src/Identity/Extensions.Core/src/PublicAPI.Unshipped.txt | Declares new public API surface for UserPasskeyInfo.Aaguid. |
| src/Identity/EntityFrameworkCore/src/IdentityUserPasskeyExtensions.cs | Maps Aaguid between EF entity JSON payload and UserPasskeyInfo. |
| src/Identity/Core/src/PasskeyHandler.cs | Extracts AAGUID from attestation and sets it on the created UserPasskeyInfo. |
javiercn
approved these changes
Feb 11, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Infer passkey display name from AAGUID
Summary
This PR improves the passkey user experience in the Blazor Web App project template by automatically inferring display names for passkeys based on their AAGUID (Authenticator Attestation GUID).
Fixes #63630
Changes
Framework (
Microsoft.AspNetCore.Identity)Aaguidproperty (byte[]?) toUserPasskeyInfoandIdentityPasskeyDatato persist the authenticator's AAGUIDPasskeyHandlerto extract the AAGUID during passkey attestationIdentityPasskeyDatauses a JSON column)Blazor Web App Template
PasskeyAuthenticators.cswhich maps known AAGUIDs to friendly authenticator namesPasskeys.razorto display inferred names and creation dates for each passkeySupported Authenticators
The template includes mappings for the top 5 most commonly used passkey authenticators:
Developers can easily add more authenticators by extending the dictionary in
PasskeyAuthenticators.cs.Demo
Before
passkey_ui_old.mp4
After
passkey_ui_new.mp4