Passkey
Integrators have two options when creating a user account. This method will be used in the future to authenticate the user when making transactions.| Auth Method | Description |
|---|---|
| Passkey | This method is more cryptographically secure, since it directly links the end user’s device to authentication. Integrators must implement both the passkey creation process and the authentication flow, making it more technically challenging to implement. |
Technical implementation
- Passkey Creation
- Passkey Authentication
Setup:By choosing this method, the user will be prompted to add their passkey to their device, either through the browser’s built-in passkey management, through a third-party passkey manager, or through their mobile device’s passkey management.Once the passkey is created by the user, it will be used to authenticate the user when making transactions. A same user can have multiple passkeys, and can use different passkeys for different purposes.Rather than implementing the passkey creation process yourself, you can use our Integrator SDK to easily create the passkey for your users.A non-discoverable credential is a credential that isn’t fully stored on the end-user’s device. The integrator must store the credential ID. For UX, the user is prompted to authenticate with their passkey directly without having to select it from a list.By default, the Byzantine SDK will create discoverable credentials when the device supports it. To create non-discoverable credentials, you can set the
Installation
Initialize the Byzantine Client
Usage example
Discoverable and non-discoverable credentials
A discoverable credential is a self-contained credential that is stored on the end-user’s device. For UX, the end-user is prompted to select their passkey from a list of their passkeys and choose which device/passkey they’d like to use.If you choose to create discoverable credentials for your users, it is not necessary to store their credential ID.
For non-discoverable credentials, you must store the credential ID returned from
createPasskey, namely, attestationData.credentialId. When authenticating transactions, pass this credential ID as the second parameter to client.webauthn.getStamp(payload, credentialId) (cf. Passkey Authentication tab).residentKey option to "discouraged":
