OpenID Connect.
A real issuer.
Synq is a full OIDC provider — not a proprietary widget pretending to be one. Standards-compliant authorization code + PKCE, refresh tokens, RS256-signed JWTs, JWKS, revocation, introspection. Any backend that speaks the spec works against Synq from day one. No SDK lock-in. No exit cost.
The spec is the contract
Auth platforms that ship a proprietary SDK as the primary API become a permanent dependency. If you want to leave, you have to rewrite every line of code that touched the SDK. Synq inverts that — the primary API is the OIDC spec, the SDKs are convenience wrappers. Your backend verifies a JWT the same way it would against any standards-compliant issuer. Replacing Synq would be a DNS change and a JWKS swap, not a rewrite.
Verify tokens from any backend
Synq tokens are RS256-signed JWTs. Any JWT library that fetches JWKS verifies them — no Synq SDK required server-side.
// Verify a Synq-issued access token from any backend, no SDK required.
import { jwtVerify, createRemoteJWKSet } from 'jose'
const JWKS = createRemoteJWKSet(
new URL('https://api.synq.id/.well-known/jwks.json')
)
export async function verify(token: string) {
const { payload } = await jwtVerify(token, JWKS, {
issuer: 'https://api.synq.id',
audience: process.env.SYNQ_BRAND_SLUG, // aud = brand.slug
})
return payload // { sub, aud, scope, iat, exp, azp, ... }
}If your stack speaks OIDC, you're done
The setup story for OIDC is short — you point your existing OIDC client at Synq.
Register an App
In the Dashboard, create an App under your Brand. Pick a type — Web, SPA, Native, or M2M. Synq issues a client ID (and a client secret for confidential clients).Set redirect URIs
Add one redirect URI per environment (preview, prod). Synq enforces exact byte-match, including the trailing slash if you have one.Point your OIDC client at Synq
Use any library that reads the OIDC discovery document. Set the issuer to https://api.synq.id and it will discover authorization, token, userinfo, and JWKS endpoints automatically.Verify tokens server-side
On any backend that speaks JWT, fetch JWKS from /.well-known/jwks.json, verify the signature, check the audience (your brand slug) and expiry. No Synq SDK required.Use the SDKs only if you want the conveniences
The @synqid SDKs add hooks, modals, theming, secure storage, and refresh-token plumbing. Skip them if you only need the standards — your auth keeps working either way.
How OIDC compliance compares
Every platform claims OIDC. The differences are in what the SDK adds on top — and how much of it your code depends on.
| Feature | Clerk | WorkOS | Auth0 | Synq |
|---|---|---|---|---|
| Full OIDC issuer (discovery doc + JWKS) | Limited | |||
| RS256-signed JWT access tokens | ||||
| Refresh token rotation (single-use) | ||||
| Token revocation + introspection endpoints | ||||
| PKCE (S256) supported on every public client | ||||
| No proprietary SDK required to verify tokens | ||||
| Wallet + Telegram + Matrica in the same issuer |
Pair it with
Device flow
The OIDC grant designed for CLIs and AI agents — RFC 8628, supported by Synq as a first-class flow.
Machine-to-machine
Client-credentials grant — same OIDC token format, no human in the loop.
Sign-In With Solana
Wallet auth on the same OIDC plane — signed-message verification, no transaction, no gas.
Common questions
The spec is the contract.
Standards-compliant OIDC from day one. Your code stays portable. Replacing Synq would be a DNS change, not a rewrite.
