Workflow: Auth0 User Login
Integrations: httpRequest, if, respondToWebhook, set, stickyNote, stopAndError, webhook

{"id": "AS2Rj41p6OyA0xZK", "meta": {"instanceId": "7858a8e25b8fc4dae485c1ef345e6fe74effb1f5060433ef500b4c186c965c18", "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], "webhookId": "046e2370-0ae1-4d64-be9b-cbb0545de323", "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], "webhookId": "7bd9ea5a-c354-41c0-9d17-4a02ca8e3055", "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, "pinData": {}, "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}]]}}}