[release/10.0] Allow UserStore
to update passkey name
#64014
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
UserStore
to update passkey nameFixes an issue where
UserStore
cannot apply updates to a passkey's name after its initial creation.Description
Microsoft.AspNetCore.Identity.EntityFrameworkCore
providesUserStore
(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
UserPasskeyInfo
type contains information about a passkey, including its ID, the public key, and the display name (Name
).Some properties in
UserPasskeyInfo
are 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:Name
SignCount
IsUserVerified
IsBackedUp
The underlying store implementation controls how these properties get updated.
UserOnlyStore
correctly handled mutations to each of these properties, butUserStore
did not update theName
property.This PR fixes
UserStore
so that theName
property gets correctly updated.Fixes #63923
Customer Impact
Apps that utilize
Microsoft.AspNetCore.Identity.EntityFrameworkCore
and 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 extendsUserStore
and override theAddOrUpdatePasskeyAsync
method 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?