Auth0 / OAuth Provider Integration
OAuth and OIDC providers (Auth0, Okta, Firebase Auth, Google OAuth)
require a publicly accessible HTTPS callback URL. Since kindling runs
on *.localhost, callbacks fail by default. This guide shows how to
wire it up.
1. Start a tunnel
kindling expose
# ✅ Public URL: https://random-name.trycloudflare.com
This creates a public HTTPS tunnel from the internet to your local cluster's ingress controller.
2. Configure your OAuth provider
Auth0
In the Auth0 Dashboard:
- Go to Applications → Your App → Settings
- Set Allowed Callback URLs:
https://random-name.trycloudflare.com/auth/callback - Set Allowed Logout URLs:
https://random-name.trycloudflare.com - Set Allowed Web Origins:
https://random-name.trycloudflare.com
Okta
In the Okta Admin Console:
- Go to Applications → Your App → General
- Set Sign-in redirect URIs:
https://random-name.trycloudflare.com/auth/callback - Set Sign-out redirect URIs:
https://random-name.trycloudflare.com
Google OAuth
In the Google Cloud Console:
- Edit your OAuth 2.0 Client
- Add to Authorized redirect URIs:
https://random-name.trycloudflare.com/auth/callback
3. Store credentials
kindling secrets set AUTH0_CLIENT_ID xxxxx
kindling secrets set AUTH0_CLIENT_SECRET xxxxx
kindling secrets set AUTH0_DOMAIN your-tenant.auth0.com
4. Set the callback URL as an env var
Your app needs to know its own public URL for constructing callback URLs:
kindling env set myapp-dev \
AUTH0_CALLBACK_URL=https://random-name.trycloudflare.com/auth/callback \
APP_URL=https://random-name.trycloudflare.com
5. Verify the flow
- Open
https://random-name.trycloudflare.comin your browser - Click your login button — you should be redirected to Auth0/Okta
- After authentication, you should land back at your app via the callback URL
Auto-detection with kindling generate
When you run kindling generate, it scans your code for OAuth patterns:
AUTH0_CLIENT_ID,OKTA_CLIENT_IDin env varspassport,next-auth,@auth0/nextjs-auth0in package.jsonfirebase-adminauth imports
If detected, the generated workflow includes the relevant secrets and
the output suggests running kindling expose for callback support.
Tunnel lifecycle
# Start
kindling expose
# Stop and restore original ingress config
kindling expose --stop
The tunnel URL changes each time you restart it. Update your provider's callback URLs accordingly, or use ngrok with a reserved subdomain for a stable URL:
kindling expose --tunnel ngrok