Skip to content

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.

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