Explore how passkeys leverage QR codes and Bluetooth for cross-platform authentication to have seamless, secure logins across devices without passwords.
Vincent
Created: November 8, 2023
Updated: October 1, 2024
Our mission is to make the Internet a safer place, and the new login standard passkeys provides a superior solution to achieve that. That's why we want to help you understand passkeys and its characteristics better.
2. Passkeys: Synced or Only Available on a Single Device
3. Technical Setup of Cross-Platform Passkey Authentication
4.1 Initiate the Passkey Cross-Platform Authentication
4.4 Start the Data Flow and Authentication Process
5. Passkeys: Bluetooth (caBLE)
5.1 What is Bluetooth Low Energy (BLE) in Authentication?
5.2 What is caBLE (Cloud-Assisted Bluetooth Low Energy)?
5.3 User Experience and Security with caBLE
5.4 Scenario: The QR Code vs. BLE Dilemma
6.1 Path to Good User Experience
7.1 User Familiarity and Adoption
7.2 Dependence on Device Capabilities
7.3 Inconsistent User Behavior
8. Real-Life Test: Hybrid Transport Passkey Behavior
8.1 Windows 11 23H2 + Chrome 119
8.2 Windows 11 23H2 + Edge 119
8.3 Windows 11 23H2 + Firefox 119
8.4 macOS Ventura + Chrome 119
8.5 macOS Ventura + Safari 16.6
8.8 Windows 10 21H2 + Chrome 119
8.9 Windows 10 21H2 + Edge 119
8.10 Windows 10 22H2 + Chrome 119
8.11 Windows 10 22H2 + Edge 119
9. Recommendations for Developers
9.3 Temporary Access Considerations
10. Conclusion: QR Code / Bluetooth Passkeys
Passkeys are more and more replacing passwords as the de-facto standard in user authentication. Unlike traditional passwords, passkeys are bound to an ecosystem (e.g. iCloud Keychain, Google Password Manager, Windows Hello or a password manager like 1Password or Dashlane); they are not designed to be memorized but are built to seamlessly integrate with your devices, offering great out- of-the-box user experience.
Imagine youre away from your personal computer perhaps at a public terminal or a friends laptop and you need to log into your passkey- protected account. This scenario is quite common and necessitates a secure yet convenient method of authentication but with passkeys many people dont know what to do, as their passkey is not immediately available in this situation. One of the passkey features to help you in such a situation is the ability to employ your passkeys across multiple devices through the facilitation of QR codes and Bluetooth technology. This process is formally known as hybrid transport in the WebAuthn specification (in previous versions of the specification it is referred to as cloud-assisted Bluetooth Low Energy caBLE).
Want to find out how many people can use passkeys?
View Adoption DataThe process is straightforward: you need a device that has your passkeys stored and is capable to take pictures, so most likely a smartphone or tablet. This device can open a tunnel to the new device just for that one instance of authentication. This not only maintains the integrity of your passkey but also ensures that access to your account on new devices can be given, no matter where you are or whose device you want to use to login.
However, this passkeys cross-platform authentication feature is surrounded with misconceptions and confusion both in its utility and its technical implementation. This is something I noticed recently again, when I visited a local IT security meetup. Through this article, we aim to unravel the complexities and provide recommendations to implement this cross-platform passkey authentication (hybrid transport) flow, ensuring you can provide the best login experience for your users.
Recent Articles
Passkeys are a form of user authentication that replaces the traditional password with a more secure and convenient cryptographic public-private-key pair. This key pair is unique to each user and is used to verify identity without the hassle of remembering complex passwords.
The advantages of passkeys are numerous when compared to their password predecessors. They significantly reduce the risk of phishing, as they cannot be tricked into being shared with a fake website. Moreover, they are immune to brute force and dictionary attacks, which are common methods used to crack passwords. Passkeys are also more user-friendly, eliminating the need to remember or manage a long list of passwords.
Passkeys are synchronized in cloud accounts, like those managed by Google Password Manager or Apple iCloud Keychain (Microsoft with Windows Hello will follow soon), or those stored in modern passkey-ready password managers, like 1Password or Dashlane. However, its essential to know that by default passkeys are bound to the ecosystem and the respective cloud account synchronization. The operating systems do not provide an interface to export the private keys and in most devices, there is a hardware component providing additional security measures to avoid any access to the private keys, e.g. the secure enclave on iOS devices or the trusted platform module (TPM) on Windows devices. Only the operating system provider can sync the passkeys to other devices in an encrypted way (ultimately protected by the users biometrics, passcode or PIN). The private keys can only be restored and decrypted using the passcode / PIN and will be destroyed in case there are too many unsuccessful login attempts to the cloud account (e.g. Apple introduces a rate limit to prevent brute-force attacks even from a privileged position on the cloud backend; Google does the same).
This inherent design means that if passkeys arent synced as described, accessing your passkeys on a new device can pose a challenge. This is precisely why the hybrid transport method for passkey cross-platform authentication (hybrid transport) with QR code and Bluetooth proximity check exists. It provides a secure bridge for your passkeys between devices without the need to sync them through a cloud account / password manager, thereby maintaining the principle that passkeys can solely remain with the user.
Are your users passkey-ready?
Test Passkey-ReadinessUsing cross-platform passkey authentication (hybrid transport) with hybrid transport helps overcoming cross-device problems, when an account is purely accessed via passkeys. As not all passkeys are synchronized in cloud accounts or password managers, the necessity for a reliable method of accessing passkeys across devices becomes critical, especially when transitioning to a new device or needing access on a shared device.
To facilitate passkey cross-platform authentication (hybrid transport), there are the following hardware requirements:
Ben Gould
Head of Engineering
I’ve built hundreds of integrations in my time, including quite a few with identity providers and I’ve never been so impressed with a developer experience as I have been with Corbado.
10,000+ devs trust Corbado & make the Internet safer with passkeys. Got questions? We’ve written 150+ blog posts on passkeys.
Join Passkeys CommunityFrom a software standpoint, the following requirements exist:
Source: passkeys.dev
The process to use passkey cross-platform authentication (hybrid transport) via QR code looks as follows:
The QR code for passkey cross-platform authentication (hybrid transport) is generated when a user attempts to access a service on a device where the registered passkey is not present, but the service knows that the user should have a passkey. Typically, a Scan QR code button or a similar call-to- action is provided within the authentication interface.
Upon user request, the device initiates the generation of a QR code. This QR code encodes a unique, time-sensitive session identifier. This identifier is tied to a session that the authenticating server temporarily maintains, awaiting completion of the authentication process.
The user scans this QR code with a device where their passkey is available. Security measures include:
The scanned QR code holds a specific URI with the scheme FIDO, e.g.: FIDO:/07824133892604070278923969472008301099476228966286113051476699183587 6383562063181103169246410435938367110394959927031730060360967994421 343201235185697538107096654083332
Scanning the QR code triggers the users second device (e.g. smartphone or tablet) to interpret the FIDO URI and communicate with the authentication server, sending a signal that the user is attempting to authenticate via a new device (e.g. the friends laptop). This action prompts the server to generate a cryptographic challenge, unique to this authentication attempt.
The challenge is sent back to the users second device (e.g. smartphone or table), where their passkey is stored. The device then creates a digital signature using the private key associated with the passkey, without the private key ever leaving the device (e.g. smartphone or tablet). The signed challenge (signature) is then sent back to the server through a secure, encrypted tunnel over the internet, verifying the integrity and origin of the authentication attempt.
The server validates the signature using the corresponding public key already associated with the users account. Upon successful validation, the server confirms the authentication, allowing the user to access the service on the new device.
Some more important privacy and security aspects to consider:
By adhering to these technical and security protocols, the QR code method for passkey cross-platform authentication (hybrid transport) upholds a high standard of security while providing a convenient way for users to authenticate their identities on new devices.
Besides, the QR code scanning process, there is also the proximity check via Bluetooth (caBLE). Being sure that the client and authenticator are physically close to each other is one of the major benefits of the WebAuthn protocol. More insights on the inner workings of this process are described in the following:
Bluetooth Low Energy (BLE) is a wireless communication technology designed for short-range data exchange. It plays a pivotal role in confirming the physical proximity of devices during the authentication process.
caBLE is a protocol that facilitates the secure transfer of authentication information between devices using BLE. When using caBLE for passkey cross- platform authentication (hybrid transport), the device that holds the passkey confirms the proximity of the requesting device via BLE signals. Once proximity is verified, the authentication process proceeds, leveraging BLE for secure, local communication.
The user experience is enhanced as this method typically requires less direct user interaction; devices in close physical proximity detect each other automatically. For security, caBLE offers a significant advantage - it ensures that the authentication process is only carried out when the two devices are near each other, preventing remote attackers from initiating the authentication process.
Imagine receiving a QR code that redirects to a malicious site. If authentication is performed through this QR code, theres a risk that the session or cookie might be hijacked. BLE circumvents this issue by not relying on a visual scan, but rather on the physical presence of devices. This proximity check minimizes the risk of man-in-the-middle attacks, as the proximity check doesnt occur over the internet or a visual medium.
Unlike other methods, caBLE does not actually exchange authentication data like passkeys. Instead, it uses BLE as a confirmation channel to establish that the devices are physically close. This check is designed to be a part of a multi-factor authentication process where BLE proximity is one of the factors, ensuring that even if other factors are compromised, without physical proximity, access is not granted.
By integrating the caBLE protocol, developers can offer a secure and user- friendly method for passkey cross-platform authentication (hybrid transport) that enhances the overall security of the authentication process. The proximity check adds an additional layer of protection that is simple for users and yet effectively safeguards against certain types of sophisticated cyber-attacks.
The following benefits of this passkey cross-platform authentication (hybrid transport) method exist:
Cross-platform passkey authentication via QR code and Bluetooth (hybrid transport) is a way to improve the UX in cross-platform scenarios compared to not offering any possibility at all. However, the user flow is absolutely new to most users and we dont expect many non-technical users to understand what is happening when they first come across this flow. The only resemblance of introducing the QR code flow can be with login flows for e.g. WhatsApp Web or Discord where QR codes are employed (here the functionality is different though). So, the analyzed cross-platform passkey authentication process via QR code / Bluetooth (hybrid transport) minimizes user effort in the cross- platform scenario, as theres no need to manually enter any credentials, but still the overall flow is unknown to most users.
The security of passkey cross-platform authentication (hybrid transport) is reinforced by advanced cryptographic techniques. When a QR code is scanned or a Bluetooth connection is made for authentication, cryptographic challenges and responses ensure that only the intended device can successfully complete the authentication process.
Proximity checks via Bluetooth add an additional layer of security, confirming that the authentication attempt is being made by someone with physical access to the secondary device.
During the cross-platform authentication (hybrid transport) process, passkeys are never temporarily stored on intermediary devices or servers, which prevents the risk of passkeys being intercepted or leaked during the transfer process. The authentication happens in real-time, and the passkey remains bound to the users primary device, preserving its integrity.
The QR code and Bluetooth authentication methods inherently provide protection against phishing. Users are less likely to be tricked into providing a passkey for a malicious site because the authentication process requires physical actions that are specific to the users trusted devices.
The process of scanning a QR code or connecting via Bluetooth typically happens in a trusted environment, reducing the chance of users inadvertently compromising their credentials.
The following disadvantages of this passkey cross-platform authentication (hybrid transport) method exist:
Introducing any new technology can lead to user confusion, especially if the users are not tech-savvy. Passkey cross-platform authentication via QR code and Bluetooth (hybrid transport) is a significant shift from traditional authentication methods, and some users might find the new process challenging to grasp, potentially leading to a slower adoption rate. However, we expect that users will eventually get used to it, so the change might be harder in the beginning and will be smoother and more accepted over time.
The success of passkey cross-platform authentication (hybrid transport) heavily relies on the users device having the necessary capabilities, such as a camera that can scan QR codes and Bluetooth functionality. Users with older devices that lack these features will not be able to take advantage of passkey cross-platform authentication (hybrid transport), creating a digital divide based on hardware limitations.
User behavior can be unpredictable, and reliance on users to perform specific actions like scanning a QR code or enabling Bluetooth can introduce user errors. For instance, Bluetooth can sometimes be seen as a UX challenge due to pairing issues, discovery problems, and general user mistrust of wireless technologies for secure transactions.
Developers face the task of constantly updating and maintaining systems to support the latest authentication methods. Integrating passkey cross-platform authentication (hybrid transport) into existing systems requires developers to stay abreast of new standards, adopt new APIs, and ensure backward compatibility, which can be resource-intensive and time-consuming.
For every new device or subsequent login request, a new passkey needs to be created if not using a synced cloud account like iCloud Keychain or a password manager. This could add complexity to the user experience and may create frustration if users are not familiar with the process or if it is not made intuitive.
There is an inherent need for user education when implementing new security methods like passkey cross-platform authentication (hybrid transport). Ensuring that users understand how to use QR codes and Bluetooth securely requires clear communication and possibly extensive customer support.
While passkey cross-platform authentication via QR code and Bluetooth (hybrid transport) presents a significant advancement in authentication technology, these potential disadvantages highlight the need for user-friendly design, robust support systems, and a gradual, well-communicated transition from traditional methods to innovative ones. As with any technological shift, balancing the innovations benefits with its challenges will be key to successful implementation and widespread user acceptance.
As a disclaimer: we are ignoring hardware security keys (e.g. YubiKeys) in the following test and only use platform authenticators which are built into the devices (e.g. Face ID, Touch ID, Windows Hello). In case of hardware security keys (e.g. YubiKey), the values for transports would be usb or nfc for instance.
Were using the following device / browser combinations and the Passkeys Debugger to test the behavior. Android is not considered as Android cannot serve as a cross- platform authentication (hybrid transport) client (see table above):
To test the behavior, we create for each combination a new passkeys with the following properties:
After the successful creation of the passkey, we then modify the input the allowCredentials WebAuthn server property and initiate a login request. We want to mimic a deleted passkey on the device where we created the passkey, so that the device / browser looks for another device that can provide a passkey via QR code / Bluetooth. Therefore, we change the credential ID and assign the value CHANGED-ID, so that a matching fails. Moreover, we change the transports property of a WebAuthn credential in allowCredentials and assign for each device / browser combination the following values:
In the WebAuthn testing site, there is also the new WebAuthn Level 3 feature for user agents hints provided. This feature can improve the user experience if the relying party has certain assumptions about how the login request can be completed in the most user-friendly way. In this test, we disregarded this feature as its not rolled out yet. Please have a look at the specifications for more details.
As expected, no local passkey matches, so its suggested to scan the QR code and use the passkey on another device (as the system knows that there exists a passkey for this user).
Quite confusingly, the QR code is also displayed here, even if we only allow for internal credentials. We couldnt find a valid reason for this behavior.
No local passkey matches, so its suggested to scan the QR code or use a hardware security key (e.g. YubiKey) / cross-platform authenticator / roaming authenticator.
For some reason, parts of the modal appears in German, which is one of the installed languages.
As expected, all forms of passkey authentication are allowed: via Windows Hello, via QR code, via known devices and via hardware security keys.
As expected, no local passkey matches, so its suggested to scan the QR code and use the passkey on another device (as the system knows that there exists a passkey for this user).
Quite confusingly, the QR code is also displayed here, even if we only allow for internal credentials. We couldnt find a valid reason for this behavior.
No local passkey matches, so its suggested to scan the QR code or use a hardware security key (e.g. YubiKey) / cross-platform authenticator / roaming authenticator.
For some reason, parts of the modal appears in German, which is one of the installed languages.
As expected, all forms of passkey authentication are allowed: via Windows Hello, via QR code, via known devices and via hardware security keys.
When creating the passkey, we received the following error (still a passkey was created):
error: TypeError: 'toJSON' called on an object that does not implement interface PublicKeyCredential.
As expected, no local passkey matches, so its suggested to scan the QR code and use the passkey on another device (as the system knows that there exists a passkey for this user).
Quite confusingly, the QR code is also displayed here, even if we only allow for internal credentials. We couldnt find a valid reason for this behavior.
No local passkey matches, so its suggested to scan the QR code or use a hardware security key (e.g. YubiKey) / cross-platform authenticator / roaming authenticator.
For some reason, parts of the modal appears in German, which is one of the installed languages.
As expected, all forms of passkey authentication are allowed: via Windows Hello, via QR code, via known devices and via hardware security keys.
As expected, no local passkey matches, so its suggested to scan the QR code and use the passkey on another device (as the system knows that there exists a passkey for this user). Moreover, you can directly select one of the known devices to use a passkey from there.
The modal is quite different to the pendant on Windows in Chrome 119.
This is an expected behavior, as we only allow to use internal passkeys but cannot find an internal credential on the device (we are not allowed to use hybrid passkeys). The passkey authentication fails in this step and in real-life implementations, you would need to provide a fallback authentication method.
No local passkey matches, so its suggested to scan the QR code or use a hardware security key (e.g. YubiKey) / cross-platform authenticator / roaming authenticator. Moreover, you can directly select one of the known devices to use a passkey from there.
The modal is quite different to the pendant on Windows in Chrome 119.
As expected, all forms of passkey authentication are allowed: via Touch ID, via QR code, via known devices and via hardware security keys.
As expected, no local passkey matches, so its suggested to scan the QR code and use the passkey on another device (as the system knows that there exists a passkey for this user).
Quite confusingly, the QR code is also displayed here, even if we only allow for internal credentials. We couldnt find a valid reason for this behavior.
No local passkey matches, so its suggested to scan the QR code or use a hardware security key (e.g. YubiKey) / cross-platform authenticator / roaming authenticator.
As expected, most forms of passkey authentication are allowed: via Touch ID, via QR code and via hardware security keys. For some reason know devices are not displayed.
As expected, no local passkey matches, so its suggested to scan the QR code and use the passkey on another device (as the system knows that there exists a passkey for this user).
Quite confusingly, the QR code is also displayed here, even if we only allow for internal credentials. We couldnt find a valid reason for this behavior.
No local passkey matches, so its suggested to scan the QR code or use a hardware security key (e.g. YubiKey) / cross-platform authenticator / roaming authenticator.
As expected, most forms of passkey authentication are allowed: via Face ID, via QR code and via hardware security keys. For some reason know devices are not displayed.
As expected, no local passkey matches, so its suggested to scan the QR code and use the passkey on another device (as the system knows that there exists a passkey for this user).
Quite confusingly, the QR code is also displayed here, even if we only allow for internal credentials. We couldnt find a valid reason for this behavior.
No local passkey matches, so its suggested to scan the QR code or use a hardware security key (e.g. YubiKey) / cross-platform authenticator / roaming authenticator.
As expected, most forms of passkey authentication are allowed: via Face ID, via QR code and via hardware security keys. For some reason know devices are not displayed.
In the following, for Windows 10 devices, we decided to go one level further and analyze how the behavior looks like if Bluetooth is disabled or not available at a Windows 10 machine in general. In particular for older desktop devices, this is still a very common scenarios as these devices often do not have a Bluetooth module, thus making cross-platform authentication via QR code and Bluetooth impossible.
8.8.1.1 transports: [internal, hybrid]
As expected, no local passkey matches, so its suggested to use the passkey on another device (as the system knows that there exists a passkey for this user - first screenshot) or choose to scan the QR code (second screenshot).
8.8.1.2 transports: [internal]
Quite confusingly, you are prompted to enter your Windows Hello PIN code (or fingerprint / face scan if set up on the device), even though we changed the credential ID (so it should actually not find the credential as it's not specified in the allowCredentials property). However, after submitting the Windows Hello PIN code, an error is thrown: "NotAllowedError: The operation either timed out or was not allowed. See: https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations- client." From a user perspective, this is a rather confusing behavior but makes sense as it could provide information about the users passkeys without user consent.
8.8.1.3 No transports property set
No local passkey matches, so its suggested to scan the QR code or use a hardware security key (e.g. YubiKey) / cross-platform authenticator / roaming authenticator.
8.8.1.4 Empty allowCredentials
As expected, all forms of passkey authentication are allowed: via Windows Hello, via QR code, via known devices and via hardware security keys.
8.8.2.1 transports: [internal, hybrid]
This is a really confusing message for users, as it's not explicitly stated what they should do and how they can authenticate. The only option they have is to click on "Cancel", making this scenario a deadend.
8.8.2.2 transports: [internal]
This behavior is the same to the case where Bluetooth is enabled. It's very confusing thate the users is prompted to enter the Windows Hello PIN code (or fingerprint / face scan if set up on the device), even though we changed the credential ID (so it should actually not find the credential as it's not specified in the allowCredentials property). However, after submitting the Windows Hello PIN code, an error is thrown: "NotAllowedError: The operation either timed out or was not allowed. See: https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations- client." From a user perspective, this is a rather confusing behavior but makes sense as it could provide information about the users passkeys without user consent.
8.8.2.3 No transports property set
No local passkey matches, so the only option you have is to use a hardware security key (e.g. YubiKey) / cross-platform authenticator / roaming authenticator.
8.8.2.4 Empty allowCredentials
Passkey authentication is only possible via Windows Hello and hardware security keys.
8.9.1.1 transports: [internal, hybrid]
As expected, no local passkey matches, so its suggested to scan the QR code and use the passkey on another device (as the system knows that there exists a passkey for this user).
8.9.1.2 transports: [internal]
Quite confusingly, you are prompted to enter your Windows Hello PIN code (or fingerprint / face scan if set up on the device), even though we changed the credential ID (so it should actually not find the credential as it's not specified in the allowCredentials property). However, after submitting the Windows Hello PIN code, an error is thrown: "NotAllowedError: The operation either timed out or was not allowed. See: https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations- client." From a user perspective, this is a rather confusing behavior but makes sense as it could provide information about the users passkeys without user consent.
8.9.1.3 No transports property set
No local passkey matches, so its suggested to scan the QR code or use a hardware security key (e.g. YubiKey) / cross-platform authenticator / roaming authenticator.
8.9.1.4 Empty allowCredentials
As expected, all forms of passkey authentication are allowed: via Windows Hello, via QR code and via hardware security keys. For some reason, known devices are not displayed.
8.9.2.1 transports: [internal, hybrid]
This is a really confusing message for users, as it's not explicitly stated what they should do and how they can authenticate. The only option they have is to click on "Cancel", making this scenario a deadend.
8.9.2.2 transports: [internal]
This behavior is the same to the case where Bluetooth is enabled. It's very confusing thate the users is prompted to enter the Windows Hello PIN code (or fingerprint / face scan if set up on the device), even though we changed the credential ID (so it should actually not find the credential as it's not specified in the allowCredentials property). However, after submitting the Windows Hello PIN code, an error is thrown: "NotAllowedError: The operation either timed out or was not allowed. See: https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations- client." From a user perspective, this is a rather confusing behavior but makes sense as it could provide information about the users passkeys without user consent.
8.9.2.3 No transports property set
No local passkey matches, so the only option you have is to use a hardware security key (e.g. YubiKey) / cross-platform authenticator / roaming authenticator.
8.9.2.4 Empty allowCredentials
Passkey authentication is only possible via Windows Hello and hardware security keys.
8.10.1.1 transports: [internal, hybrid]
As expected, no local passkey matches, so its suggested to scan the QR code and use the passkey on another device (as the system knows that there exists a passkey for this user).
8.10.1.2 transports: [internal]
Quite confusingly, you are prompted to enter your Windows Hello PIN code (or fingerprint / face scan if set up on the device), even though we changed the credential ID (so it should actually not find the credential as it's not specified in the allowCredentials property). However, after submitting the Windows Hello PIN code, an error is thrown: "NotAllowedError: The operation either timed out or was not allowed. See: https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations- client." From a user perspective, this is a rather confusing behavior but makes sense as it could provide information about the users passkeys without user consent.
8.10.1.3 No transports property set
No local passkey matches, so its suggested to scan the QR code or use a hardware security key (e.g. YubiKey) / cross-platform authenticator / roaming authenticator.
8.10.1.4 Empty allowCredentials
As expected, all forms of passkey authentication are allowed: via Windows Hello, via QR code and via hardware security keys. For some reason, known devices are not displayed.
8.10.2.1 transports: [internal, hybrid]
This is a really confusing message for users, as it's not explicitly stated what they should do and how they can authenticate. The only option they have is to click on "Cancel", making this scenario a deadend. For some reason, parts of the Windows Security modal are also displayed in German (a second language installed on this device).
8.10.2.2 transports: [internal]
This behavior is the same to the case where Bluetooth is enabled. It's very confusing thate the users is prompted to enter the Windows Hello PIN code (or fingerprint / face scan if set up on the device), even though we changed the credential ID (so it should actually not find the credential as it's not specified in the allowCredentials property). However, after submitting the Windows Hello PIN code, an error is thrown: "NotAllowedError: The operation either timed out or was not allowed. See: https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations- client." From a user perspective, this is a rather confusing behavior but makes sense as it could provide information about the users passkeys without user consent.
8.10.2.3 No transports property set
No local passkey matches, so the only option you have is to use a hardware security key (e.g. YubiKey) / cross-platform authenticator / roaming authenticator.
8.10.2.4 Empty allowCredentials
Passkey authentication is only possible via Windows Hello and hardware security keys.
8.11.1.1 transports: [internal, hybrid]
As expected, no local passkey matches, so its suggested to scan the QR code and use the passkey on another device (as the system knows that there exists a passkey for this user).
8.11.1.2 transports: [internal]
Quite confusingly, you are prompted to enter your Windows Hello PIN code (or fingerprint / face scan if set up on the device), even though we changed the credential ID (so it should actually not find the credential as it's not specified in the allowCredentials property). However, after submitting the Windows Hello PIN code, an error is thrown: "NotAllowedError: The operation either timed out or was not allowed. See: https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations- client." From a user perspective, this is a rather confusing behavior but makes sense as it could provide information about the users passkeys without user consent.
8.11.1.3 No transports property set
No local passkey matches, so its suggested to scan the QR code or use a hardware security key (e.g. YubiKey) / cross-platform authenticator / roaming authenticator.
8.11.1.4 Empty allowCredentials
As expected, all forms of passkey authentication are allowed: via Windows Hello, via QR code and via hardware security keys. For some reason, known devices are not displayed.
8.11.2.1 transports: [internal, hybrid]
This is a really confusing message for users, as it's not explicitly stated what they should do and how they can authenticate. The only option they have is to click on "Cancel", making this scenario a deadend.
8.11.2.2 transports: [internal]
This behavior is the same to the case where Bluetooth is enabled. It's very confusing thate the users is prompted to enter the Windows Hello PIN code (or fingerprint / face scan if set up on the device), even though we changed the credential ID (so it should actually not find the credential as it's not specified in the allowCredentials property). However, after submitting the Windows Hello PIN code, an error is thrown: "NotAllowedError: The operation either timed out or was not allowed. See: https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations- client." From a user perspective, this is a rather confusing behavior but makes sense as it could provide information about the users passkeys without user consent.
8.11.2.3 No transports property set
No local passkey matches, so the only option you have is to use a hardware security key (e.g. YubiKey) / cross-platform authenticator / roaming authenticator.
8.11.2.4 Empty allowCredentials
Passkey authentication is only possible via Windows Hello and hardware security keys.
Want to experiment with passkey flows? Try our Passkeys Debugger.
Try for FreePasskey cross-platform authentication via QR code / Bluetooth (hybrid transport) offers a balance between security and UX. However, its an entirely new process for most users and could cause many confusing situations, so need to think carefully if you want to promote it.
We hope that we could shade some light on the topic of passkey cross-platform authentication (hybrid transport) via QR code / Bluetooth, explain how to set up things and how the behavior on different device / browser combinations looks like. If you have any questions, feel to reach out to us via our passkeys community or subscribe to our passkeys Substack. Lets make the Internet a safer place by spreading passkeys.
Table of Contents
Enjoyed this read?
🤝 Join our Passkeys Community
Share passkeys implementation tips and get support to free the world from passwords.
🚀 Subscribe to Substack
Get the latest news, strategies, and insights about passkeys sent straight to your inbox.
We provide UI components, SDKs and guides to help you add passkeys to your app in <1 hour
Start for free
Recent Articles
WebAuthn Relying Party ID (rpID) & Passkeys: Domains & Native Apps
Vincent - September 21, 2023
WebAuthn Resident Key: Discoverable Credentials as Passkeys
Vincent - September 28, 2023
WebAuthn Conditional UI (Passkeys Autofill) Technical Explanation
Vincent - October 20, 2023