[release/10.0] Allow UserStore to update passkey name
#64014
Merged
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.
Backport of #63981 to release/10.0
/cc @MackinnonBuck
Allow
UserStoreto update passkey nameFixes an issue where
UserStorecannot apply updates to a passkey's name after its initial creation.Description
Microsoft.AspNetCore.Identity.EntityFrameworkCoreprovidesUserStore(users + roles), andUserOnlyStore(users only). Both stores enable associating one or more passkeys with a user. Passkeys are a new feature in .NET 10.The
UserPasskeyInfotype contains information about a passkey, including its ID, the public key, and the display name (Name).Some properties in
UserPasskeyInfoare mutable, and others are immutable. CallingUserManager.AddOrUpdatePasskeyAsync(user, passkey)will either add a passkey to the user or update only the mutable properties of an existing passkey. These mutable properties consist solely of:NameSignCountIsUserVerifiedIsBackedUpThe underlying store implementation controls how these properties get updated.
UserOnlyStorecorrectly handled mutations to each of these properties, butUserStoredid not update theNameproperty.This PR fixes
UserStoreso that theNameproperty gets correctly updated.Fixes #63923
Customer Impact
Apps that utilize
Microsoft.AspNetCore.Identity.EntityFrameworkCoreand support roles will not be able to change the name of a passkey after its initial creation. A workaround exists, which is to create a custom store type that extendsUserStoreand override theAddOrUpdatePasskeyAsyncmethod to exhibit the correct behavior.Regression?
Passkeys are a new feature in .NET 10. The feature never previously worked in this code path.
Risk
The fix is simple: copy an additional property that wasn't getting copied. This is not a breaking change and does not require schema changes or database migrations.
Verification
New automated tests have been added to ensure that all store implementations support modifications to all mutable passkey properties.
Packaging changes reviewed?