datumctl. Auth0 handles Google social login and enforces an email-based allow-list — unauthorized users are blocked before a token is ever issued. The configuration uses Envoy Gateway SecurityPolicy resources and applies to Windows, macOS, and Linux.
How it works
Authorization (are you allowed): Auth0 checks the user against your allow-list before issuing a token. Unauthorized users never get a token — Envoy never sees them.
Prerequisites
datumctlinstalled and authenticated- A valid Datum Project
- An existing HTTPProxy in the Datum UI (this provides the Gateway and HTTPRoute automatically)
- An Auth0 account (free tier is sufficient)
- A Google Cloud project for the social connection
Note: The HTTPProxy name is the name of the auto-generated HTTPRoute that the SecurityPolicy will target. Find it with:
Part 1: Auth0 setup
Step 1: Create an Auth0 tenant
- Sign up at auth0.com and create a tenant
- Note your tenant domain — it looks like
dev-xxxxxxxx.us.auth0.com
Step 2: Create an application
- In the Auth0 dashboard go to Applications → Applications → Create Application
- Name it (e.g.
datum-gateway-app) - Select Regular Web Applications
- Select Create
- On the Settings tab, note your Client ID and Client Secret
- Under Allowed Callback URLs add:
- Under Allowed Logout URLs add:
- Select Save Changes
Step 3: Enable Google social login
- Go to Authentication → Social → Create Connection
- Select Google / Gmail
- Enter your Google OAuth Client ID and Client Secret (from Google Cloud Console → APIs & Services → Credentials)
- Enable the connection for your application under the Applications tab of the connection
- In Google Cloud Console, add Auth0’s callback URL to your OAuth client’s Authorized redirect URIs:
This is required so Google can redirect back to Auth0 after login. Without it, Google returns
Error 400: redirect_uri_mismatch.
Note: If you do not have Google OAuth credentials yet, Auth0 provides a built-in dev key for testing. Go to the Google connection settings and leave Client ID/Secret blank — Auth0 will use its own dev credentials. Create dedicated Google OAuth credentials before moving to production.
Step 4: Create an access control action
This is where individual user access is enforced. Auth0 runs this code during login — users not in the list are denied before a token is ever issued.- Go to Actions → Library → Build Custom
- Name it
enforce-email-allowlist - Select Login / Post Login trigger
- Replace the default code with:
- Select Deploy
- Go to Actions → Triggers → post-login
- Drag your
enforce-email-allowlistaction from the right sidebar into the flow between Start and Complete - Select Apply
allowedEmails array and select Deploy. No gateway config changes required.
Part 2: Datum gateway configuration
The Datum HTTPProxy already manages the Gateway and HTTPRoute. You only need to create a Secret (to store the Auth0 client secret) and a SecurityPolicy (to attach OIDC to the route).Step 1: Set variables
Windows (PowerShell)
macOS / Linux
Step 2: Create the Auth0 client secret
The Secret must include thegateway-sync label or the edge proxy will not receive it and all requests will return HTTP 500.
Windows (PowerShell)
macOS / Linux
Step 3: Apply the SecurityPolicy
This attaches OIDC authentication to the existing HTTPProxy route.Warning: Use only theoidcblock — do not add ajwtblock, as it conflicts with the OIDC filter and causes HTTP 500.
Windows (PowerShell)
macOS / Linux
Verification
Unauthenticated request — redirects to Auth0
Browser flow — allowed user
- Open
https://your-app.example.comin a browser - You are redirected to Auth0 → Google login
- Sign in with an email in the allow-list
- You are redirected back and the app loads —
HTTP 200
Browser flow — denied user
- Sign in with an email not in the allow-list
- Auth0 displays:
Access denied: you are not authorized to use this application. - No token is issued — Envoy is never reached
Managing access
All access control is managed in the Auth0 dashboard — no gateway config changes needed. Add a user:- Go to Actions → Library →
enforce-email-allowlist - Add the email to
allowedEmails - Select Deploy
- Remove the email from
allowedEmails - Select Deploy
- Optionally revoke any active sessions: User Management → find user → Invalidate Sessions