Linking Guide
A link will authorize a remote client to access the service.
This is done by generating a requestId and waiting for a device to attest a Passkey.
A link event can only be acknowledged by the service when the remote client has successfully authenticated.
The linking processs is backed by a Deep Link and a QR Code.
The SignalClient is responsible for generating the deep link and presenting to another client.
The remote client will handle the Deep Link by submitting a Passkey with the Liquid Extension to the origin service.
Once the service has validated the linking request, the client will be able to communicate with the service and establish a peer-to-peer connection.
Who is this for?
- dApps/Wallets that want to integrate deeply into
Liquid Auth.
Deep Link
Liquid uses a custom deep link to handle linking between devices.
The format is as follows:
liquid://<ORIGIN>/?requestId=<UUID_OF_REQUEST>This link will be used to generate a QR code for the user to scan with their device.
Origin
The origin is the server that will handle the linking request.
Request ID
The request ID is a UUID generated by a client to identify the linking request.
Diagram
This diagram illustrates the linking process between a website and a wallet.
sequenceDiagram participant Website as Answer Client participant Server participant Wallet as Offer Client Website->>Server: Subscribe to 'wss:link' Website-->>Website: Display QR Connect Request ID Wallet->>Website: Scan QR Code Server-->>Wallet: Get Challenge/Options Wallet->>Server: Register/Authenticate Server-->>Server: Validate Signatures Server-->>Website: HTTPOnly Session Server->>Wallet: Ok Response + HTTPOnly Session Server->>Website: Emit to `wss:link` client