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 →
{
"id": "AS2Rj41p6OyA0xZK",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Auth0 User Login",
"tags": [],
"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
}
],
"active": true,
"settings": {
"executionOrder": "v1"
},
"versionId": "7d2f0dad-3951-49e2-9467-03124dbc52ba",
"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
Securely authenticate users via Auth0 without managing complex login flows yourself, saving development time and enhancing security for your web applications. This workflow is ideal for developers or teams integrating user authentication into apps, handling the OAuth process seamlessly from a webhook trigger. The key step involves exchanging an authorisation code for an access token using Auth0's API, followed by retrieving user details to complete the login.
Use this workflow when building quick authentication for single-page apps or APIs that rely on Auth0, especially if you need a lightweight, customisable solution without full Auth0 SDKs. Avoid it for high-traffic production environments requiring advanced features like multi-factor authentication, where dedicated libraries are preferable. Common variations include adding email verification post-login or integrating with databases to store user sessions.
About this workflow
Auth0 User Login. 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.
PUQ Docker NextCloud deploy. Uses respondToWebhook, stickyNote, httpRequest, ssh. Webhook trigger; 44 nodes.
Generate Leads with Google Maps - AlexK1919. Uses manualTrigger, scheduleTrigger, executeWorkflowTrigger, stopAndError. Event-driven trigger; 42 nodes.
Analyze_email_headers_for_IPs_and_spoofing__3. Uses stickyNote, respondToWebhook, itemLists, httpRequest. Webhook trigger; 35 nodes.
Unique QRcode coupon assignment and validation for Lead Generation system. Uses httpRequest, formTrigger, googleSheets, stickyNote. Webhook trigger; 29 nodes.
Line Save File to Google Drive and Log File's URL. Uses googleSheets, googleDrive, httpRequest, stickyNote. Webhook trigger; 27 nodes.