iOS Passkey authentication request does not present correct passkey when provided with credentialId
We have an application at keys.coinbase.com that allows for webauthn registration and attestation with passkeys.
A user can create a passkey and authenticate with that passkey. A user can also have multiple passkeys.
After a recent iOS update, when a user has multiple registered passkeys for our Relying Party Domain (keys.coinbase.com) whose passkey names are identical (i.e. "Smart Wallet"), 1Password fails to request authentication for a specific one of the identical passkeys even an allowed credential is passed to the authentication function.
For instance:
Passkey 1
Name: "Smart Wallet"
CredentialID: "123abc"
Passkey 2
Name: "Smart Wallet"
CredentialID: "456def"
If both credentials exist and I try to authenticate specifically with Passkey 1 by providing the credentialId "123abc" to the authorization request, 1Password fails to display the appropriate credential.
Instead, I see cross-platform prompts and an option to choose a 1Password credential from a subsequent tray (see screenshot).
You can reproduce this issue on an iOS device with the latest version of 1Pass iOS by:
1. Go to https://coinbase.github.io/coinbase-wallet-sdk/
2. Under "Wallet connection" > "eth_requestAccounts" > press Submit
3. Popup opens to "Sign in with Base" > Select "Create account"
4. Do not enter a "Passkey name" > Press "Continue"
5. Save passkey to 1Pass iOS by pressing "Continue" on the "Create a passkey?" system tray
6. In 1Pass UI tray that pops up, make sure you select to "Create new item for..." and press "Save"
7. Once you've saved the passkey, you will automatically land back on https://coinbase.github.io/coinbase-wallet-sdk/
8. Scroll down to "Sign Message" section > "Personal Sign" > Press "Example Message"
9. A popup will open and ask you to sign an Example message, press "Sign"
10. Passkey authentication tray opens and suggests correct passkey, but DO NOT CONTINUE. Just note that 1Pass presented the correct passkey to sign with.
11. Now, close the passkey prompt with signing
12. In the top right corner of the page open (keys.coinbase.com), press the settings "gear" icon > Scroll down > Press "Sign out"
13. Popup closes and https://coinbase.github.io/coinbase-wallet-sdk/ warns you that your wallet was disconnected > Press "Yes"
14. Repeat steps 2 - 9
15. Passkey authentication tray opens and suggests cross-platform options with 1Pass listed at the bottom, but it does not offer a preselected passkey based on the credentialId. This is the bug.
