samples/. Everything there is MIT-licensed and written to be lifted into your own project.
Veriqa lives on the issuer side. An application that only signs users in stays a plain
OpenID Connect relying party — no Veriqa package, no SDK. Veriqa packages appear only where the
application is the issuer (embedded) or calls the confirmation API server-to-server.
- Runnable — projects with their own
README.md, ports and configuration. A .NET sample starts withdotnet run --project <path>; the samples outside .NET that run next to Veriqa start withdocker compose upin their folder. - Code to copy — one file per stack with the complete client wiring. There is no project file around it: the surrounding application is yours.
Scenario samples
Each one shows one mechanism and nothing else.
The Aspire sample and the custom-channel host share port 7320 — run them one at a time.
Agent harness sample
claude-code/ is a Claude Code plugin rather than a .NET project: chosen agent actions — a
git push, the start of a long command cycle, a costly run with a token estimate — wait until a
person approves them in the messenger, with a chain of two approvers for the costly run. See
Approvals in Claude Code and the sample’s README.
Showcase samples
The two samples undersamples/dotnet/showcase/ imitate a whole product, so the flows can be seen
end to end the way a user meets them. Each is one process in three roles: the embedded issuer, the
OIDC client of the browser, and the backend that creates confirmations.
Nova Stream — streaming on a TV
dotnet/showcase/streaming-tv · https://localhost:7350. Sign-in by QR from the sofa, a
welcome card from the channel’s claims, recognition of a returning viewer, step-up when buying
a title. Remote-control navigation, written for TV browsers (Tizen 5.5, webOS 5) and runnable
behind an HTTP tunnel.Helio — customer support
dotnet/showcase/support-desk · https://localhost:7360. A public support page, sign-in, the
customer’s card, and step-up before a ticket is closed or deleted.- The person’s card from the claims the channel gave: name, picture,
@usernameand a masked user id (Telegram), a masked phone (WhatsApp), an address (Email). Identifiers are masked on the server; the full value never reaches the browser. - Step-up addressed to the signed-in person. The confirmation names the identity of the current
session (
expected_identities), and the operation is applied only whenmatched_typeagrees — a confirmation from another account changes nothing. - Receipts that differ by purpose. A sign-in’s question is replaced by “Sign-in to … confirmed ✅”
(
ReplacePrompt); a confirmation keeps its question and gets the receipt as a message of its own (NewMessage, stated in the backend client’s entry). SeeOutcomeNoticein Configuration. - Veriqa’s own pages, branded. The sign-in page and the confirmation window are the product’s
screens; only brand, colour, theme and — for the television — a stylesheet are set through
AuthPageDesign.
Running the .NET samples
- .NET SDK 10.0+ and a trusted local HTTPS certificate (
dotnet dev-certs https --trust). - Enable at least one channel and give it credentials. Every sample ships with all channels
"Enabled": false; with none enabled the sign-in page answersno_channels_available. A bot token is the quickest route — see Channel setup and the sample’s own README. - Pairs such as
login+login-clientstart issuer first: the client fails discovery otherwise.