Guide
Deploy this app once, then point every small project at the same admin login. You keep one username, password, second factor, and JWT signing key — consumers only verify the token (or call the verify API) instead of shipping their own credential store.
Typical uses: personal dashboards, internal tools, staging apps, and OAuth-style redirects where you already trust this host.
Agent / MCP
Add this endpoint to Cursor or VS Code so an agent can ask how to integrate third-party login.
{
"mcpServers": {
"signet": {
"url": "https://signet.davidjones.fun/api/mcp"
}
}
}RFC 6238 time-based codes from any authenticator app.
Generate a Base32 secret, then verify codes on the tool page before enabling login.
Env output
ACCESS_TOTP_SECRET
Platform authenticators and roaming security keys.
RP ID must match the deployed hostname. Export the JSON credential and keep TOTP as a fallback.
Env output
ACCESS_WEBAUTHN_SECRET
Optional encryption for OAuth-style return payloads.
Used when the browser sends an ephemeral public key so only that client can decrypt the session token.
Server secret
ECDH_SERVER_PRIVATE_KEY
Each topic has its own URL so you can bookmark or share it.
Follow these in order. Each step points to the page or tool that owns the details.
Set the admin login and signing secret. Use a 32+ character JWT secret.
Username
ACCESS_USERNAME
Password
ACCESS_PASSWORD
Signing key
JWT_SECRET
Add at least one second-factor secret before enabling login.
TOTP
ACCESS_TOTP_SECRET
WebAuthn
ACCESS_WEBAUTHN_SECRET
Use this only for encrypted login or OAuth callbacks.
Server secret
ECDH_SERVER_PRIVATE_KEY
For cross-origin callbacks, list owned origins. Same-origin relative paths work without an allowlist.
Allowlist
ALLOWED_REDIRECT_URLS
Send users to the login route, then verify the returned token in your app.
Login
/login?redirectUrl=...
JWT
token
Verify API
/api/auth/verify
One place to rotate secrets
JWT signing key and admin password change here; apps only validate tokens.
Stable identity claims
Issued tokens include iss, sub, username, preferred_username, and optional email for your UI.
Safer redirects
Host allowlist blocks open redirects; pair with a random state on each login.
Playground for OAuth
Use /oauth/playground to exercise flows without wiring a separate client first.
After a successful password / TOTP / WebAuthn path, this service issues a signed JWT. Your callback should treat it like an opaque credential until verified.
Claims you can rely on
Inspect a decoded sample at /login/blank with redirectUrl=/login/blank after configuring env.
JWT_SECRET to browsers or public repos