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