This workflow follows the HTTP Request → Stopanderror recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"nodes": [
{
"id": "25022573-c99e-40d2-88e2-a0e7a9780181",
"name": "Request Access Token",
"type": "n8n-nodes-base.httpRequest",
"position": [
1260,
320
],
"parameters": {
"url": "={{ $json.domain }}/oauth/token",
"method": "POST",
"options": {},
"jsonBody": "={\n \"grant_type\": \"authorization_code\",\n \"code\": \"{{ $json.query.code }}\",\n \"client_id\": \"{{ $json.client_id }}\",\n \"client_secret\": \"{{ $json.client_secret }}\",\n \"redirect_uri\": \"{{ $json.my_server }}\",\n \"audience\": \"{{ $json.domain }}/api/v2/\"\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "content-type",
"value": "application/x-www-form-urlencoded"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "233d69ed-d835-4022-815e-e786706ec78a",
"name": "Get Userinfo",
"type": "n8n-nodes-base.httpRequest",
"position": [
1500,
320
],
"parameters": {
"url": "={{ $('Set Application Details1').item.json.domain }}/userinfo",
"options": {},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "=Bearer {{ $json.access_token }}"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "860e8a20-f6a3-4c8e-be71-361e6f1f8641",
"name": "If",
"type": "n8n-nodes-base.if",
"position": [
720,
320
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "fa80ac35-7029-4507-b5ea-845bec07b672",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{$json.query.code}}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.1
},
{
"id": "7c4e15c7-2ee0-4c54-8255-e7cc250e718a",
"name": "No Code Found",
"type": "n8n-nodes-base.stopAndError",
"position": [
880,
540
],
"parameters": {
"errorMessage": "Couldn't get authorization code!"
},
"typeVersion": 1
},
{
"id": "2e0b2ff5-47ce-4199-bdd2-e31a4d32fd15",
"name": "Open Auth Webpage",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
1020,
40
],
"parameters": {
"options": {},
"redirectURL": "={{ $json.domain }}/authorize?response_type=code&scope=openid+email+profile+image+name&client_id={{ $json.client_id }}&redirect_uri={{ $json.my_server }}/webhook/receive-token",
"respondWith": "redirect"
},
"typeVersion": 1.1
},
{
"id": "d790ce47-725a-4a69-b66f-f7e80e2d9e5e",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
1180,
80
],
"parameters": {
"color": 6,
"width": 238.05017098334866,
"height": 140.50170983348636,
"content": "### You can also add &connection=github to end of authorize URL in order to get user to login via Github, Facebook, etc"
},
"typeVersion": 1
},
{
"id": "1c5bb01a-0fed-4783-b18d-d8f7e818371c",
"name": "Set Application Details",
"type": "n8n-nodes-base.set",
"position": [
780,
40
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "003d523a-5e14-4a5a-aed6-f72c3fce6e6d",
"name": "domain",
"type": "string",
"value": ""
},
{
"id": "7db513f3-55f6-4bab-92b0-e62d0b7f05a1",
"name": "client_id",
"type": "string",
"value": ""
},
{
"id": "52da7d5d-6683-4cf9-a7de-c2ab2ce48f3d",
"name": "my_server",
"type": "string",
"value": ""
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "8ced9fb6-fd49-4d57-8d74-b04e45b6c216",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
80,
-456.1003419666973
],
"parameters": {
"color": 5,
"width": 623.7263504769883,
"height": 397.87914003146636,
"content": "## 1. First, go to https://auth0.com and create a Single Page Application. From Dashboard/Applications, click on your new app settings. The first step is to add the following to allowed callback URLs:\nhttp://localhost:5678, http://localhost:5678/webhook/receive-token \n\n### (If you do not run n8n locally, replace localhost with your server where you run n8n. You must also replace it in **Set Application Details** 'my_server' field)\n\n## From the same settings page, retrieve the Domain, Client_ID, and Client_Secret of your application."
},
"typeVersion": 1
},
{
"id": "94155312-1230-4c13-9104-5e26a6f68e91",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1280,
-40
],
"parameters": {
"color": 6,
"width": 437.4336297478876,
"height": 107.35461655041311,
"content": "### This step will return the authentication page to the user and let him login using gmail or by creating a new account."
},
"typeVersion": 1
},
{
"id": "9a7bcabf-1cc0-43e5-8f52-cc3f2781150f",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
420,
-40
],
"parameters": {
"width": 1296.8510714753793,
"height": 256.53228919365705,
"content": "## Step 1: Authentication\n"
},
"typeVersion": 1
},
{
"id": "7e7560d6-4c26-4e80-ad62-07a674e928f9",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
420,
260
],
"parameters": {
"width": 1302.371850917427,
"height": 444.78164181462137,
"content": "## Step 2: Get Access Token\n"
},
"typeVersion": 1
},
{
"id": "97c8bc77-bc7d-4be2-9858-668c5e325f49",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
420,
560.9464093496792
],
"parameters": {
"color": 6,
"width": 327.74230574931124,
"height": 144.40136786678917,
"content": "### If Step 1 was successful, Auth0 will automatically call Step 2 in its callback with a code. This code is used to generate an access token which can verify the user is legitimate and email verified."
},
"typeVersion": 1
},
{
"id": "fe103ba1-8143-482c-846f-0f381ca2661a",
"name": "Set Application Details1",
"type": "n8n-nodes-base.set",
"position": [
1000,
320
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "003d523a-5e14-4a5a-aed6-f72c3fce6e6d",
"name": "domain",
"type": "string",
"value": ""
},
{
"id": "7db513f3-55f6-4bab-92b0-e62d0b7f05a1",
"name": "client_id",
"type": "string",
"value": ""
},
{
"id": "52da7d5d-6683-4cf9-a7de-c2ab2ce48f3d",
"name": "my_server",
"type": "string",
"value": ""
},
{
"id": "d339dd3d-ed57-4b0f-81c6-a8f5f7c474fb",
"name": "client_secret",
"type": "string",
"value": ""
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "b3bb59b8-16fc-483d-ae8d-ec3e65c3326d",
"name": "/login",
"type": "n8n-nodes-base.webhook",
"position": [
540,
40
],
"parameters": {
"path": "login",
"options": {},
"responseMode": "responseNode"
},
"typeVersion": 2
},
{
"id": "79825832-6d06-4a48-aa0a-bad3d52ab2c1",
"name": "/receive-token",
"type": "n8n-nodes-base.webhook",
"position": [
540,
320
],
"parameters": {
"path": "receive-token",
"options": {},
"responseMode": "lastNode"
},
"typeVersion": 2
},
{
"id": "b9406ef0-3567-46da-9989-d7f458ad73fb",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
760,
-460
],
"parameters": {
"color": 5,
"width": 426.62126002791706,
"height": 393.48225931142105,
"content": "## 2. Fill in Set Application Details and Set Application Details1\n\n## 3. **Login from https://<n8n server address>/webhook/login!**"
},
"typeVersion": 1
}
],
"connections": {
"If": {
"main": [
[
{
"node": "Set Application Details1",
"type": "main",
"index": 0
}
],
[
{
"node": "No Code Found",
"type": "main",
"index": 0
}
]
]
},
"/login": {
"main": [
[
{
"node": "Set Application Details",
"type": "main",
"index": 0
}
]
]
},
"/receive-token": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"Request Access Token": {
"main": [
[
{
"node": "Get Userinfo",
"type": "main",
"index": 0
}
]
]
},
"Set Application Details": {
"main": [
[
{
"node": "Open Auth Webpage",
"type": "main",
"index": 0
}
]
]
},
"Set Application Details1": {
"main": [
[
{
"node": "Request Access Token",
"type": "main",
"index": 0
}
]
]
}
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
How this works
This workflow enables seamless user verification and login through Auth0, allowing your application to authenticate users securely without building complex backend logic from scratch. It's ideal for developers integrating authentication into web apps or services that need reliable identity management. The key step involves triggering a webhook to initiate the process, followed by an HTTP request to fetch the access token from Auth0, which then verifies user details and handles login responses efficiently.
Use this workflow when implementing quick, standards-compliant login flows in prototypes or small-scale apps relying on Auth0 for OAuth or OpenID Connect. Avoid it for high-traffic production environments requiring custom security layers or when your system demands multi-factor authentication beyond Auth0's basics. Common variations include adding email verification nodes or integrating with databases like PostgreSQL to store user sessions post-login.
About this workflow
User Verification And Login Using Auth0. Uses httpRequest, stopAndError, respondToWebhook, stickyNote. Webhook trigger; 16 nodes.
Source: https://github.com/Zie619/n8n-workflows — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Portfolio Orchestrator. Uses httpRequest. Webhook trigger; 59 nodes.
jump-section: Comment Fix Pipeline. Uses httpRequest. Webhook trigger; 24 nodes.
GitHub Issues Router (Linear / Jira / ClickUp). Uses stickyNote, httpRequest, respondToWebhook. Webhook trigger; 23 nodes.
Form to CRM Lead Router (Pipedrive / HubSpot / Salesforce). Uses stickyNote, httpRequest, respondToWebhook. Webhook trigger; 22 nodes.
Calendly to CRM Sync (Pipedrive / HubSpot / Salesforce). Uses stickyNote, httpRequest, respondToWebhook. Webhook trigger; 22 nodes.