Connect to
Lynxwares Account.
A server-side OpenID Connect integration, from registration to revocation.
Register your platform.
Give the studio owner a platform name, a unique client ID, and the exact callback URL. The owner creates it in Studio control → Connected apps. Client secrets are shown once and belong in your server environment.
- Deployed callbacks require HTTPS; local development may use localhost.
- No wildcard callbacks, fragments or credentials in the URL.
- This service registers confidential web clients, using
client_secret_basicand mandatory PKCE.
LYNXWARES_ISSUER=https://lynxwares.com
LYNXWARES_CLIENT_ID=your-client-id
LYNXWARES_CLIENT_SECRET=your-private-secret
LYNXWARES_CALLBACK_URL=https://your-platform.example/auth/callbackUse discovery.
Configure a maintained OpenID Connect library with the issuer. It should discover authorization, token, user info and signing key endpoints, and refresh its signing-key cache when keys rotate.
GET https://lynxwares.com/.well-known/openid-configurationKeep this issuer on your server’s allowlist. Never accept an arbitrary issuer URL from a browser request.
Exchange and verify.
Validate state against the pending session and consume it once. Exchange the code from your server with the same callback, client authentication and original PKCE verifier.
Signature and accepted signing algorithm
Exact issuer and your client ID as audience
Token expiry and any not-before constraint
Nonce against the saved one-time value
Do not treat a decoded JWT as a verified JWT. Use your OpenID library’s validation. Create your own HttpOnly, Secure, SameSite session after validation.
Keep account linking explicit.
Store the pair iss + sub as the external identity. Ask an existing user to sign in to their current platform account before linking it. Even a verified email match is not permission to merge two accounts.
Email is optional and can be absent. Keep profile names editable, and do not turn Lynxwares roles into your own administrator permissions.
Handle disconnection.
Store tokens on your server. Refresh tokens rotate: replace the old token atomically and serialize simultaneous refreshes. On invalid_grant, clear the connection and ask the member to reconnect.
Disconnecting in Lynxwares revokes its consent and token records. It does not instantly invalidate a JWT already issued to an offline validator, or sign the user out of your app. Limit your own session lifetime and use token introspection when you need immediate revocation checks.
Current lifetimes: authorization codes 2 minutes, access tokens 10 minutes, refresh tokens 7 days. These may change; read expiry values from the response.
Before you ship
Redirect rejected
Match scheme, host, port and path exactly to the registered callback.
Code exchange fails
Check the original verifier, client authentication and callback. Codes expire and can only be used once.
No email claim
The scope may not have been approved, or the account may not have an email. Use the subject identifier.
Disconnected user still signed in
Your app owns its session. Revoke or expire it according to your own policy.