Building blocks
Transaction orchestration
Every sign-in, registration or confirmation is a transaction with its own context,
correlation id, state, lifetime, chosen channel, external identity, local account link and
audit log.
Channel adapters
Each channel — a messaging app or another mobile channel — is a separate adapter / connector. Out of the box:
Telegram, WhatsApp, other channels and Email — designed to be extensible.
OpenIddict integration
Completes primary sign-in, second factor, step-up confirmation and channel linking — without
replacing OpenIddict.
Completion
The application finishes the flow via callback, SignalR live updates or polling once the
transaction is confirmed.
Account & channel linking
Pairs the user’s channel identity with the local account, optionally linking a
notification channel in the same step.
Audit trail
Each transaction carries an audit log of state changes and confirmations.
QR orchestration
Veriqa generates a short-lived entry point per transaction. The QR code does not carry the authentication logic — it simply opens the right bridge flow for the chosen channel and ties the user to the current transaction.How these blocks work in the sign-in flow
From starting the transaction to issuing OpenIddict tokens — step by step.