Automatisation n8n : gestion des tokens avec Webhook et Scheduler
Ce workflow n8n a pour objectif de gérer l'authentification via des tokens en utilisant un Webhook et un déclencheur planifié. Dans un contexte où la sécurité des données est primordiale, ce type d'automatisation est particulièrement utile pour les entreprises qui nécessitent une gestion dynamique des accès à leurs API. Par exemple, les équipes de développement peuvent bénéficier de cette automatisation pour s'assurer que les tokens d'accès sont toujours valides et à jour, évitant ainsi des interruptions de service ou des erreurs d'authentification.
- Étape 1 : le workflow commence par un Webhook qui reçoit des requêtes.
- Étape 2 : une fois la requête reçue, le flux vérifie si le token est valide à l'aide d'un nœud conditionnel. Si le token est valide, le flux continue ; sinon, il déclenche une demande HTTP pour obtenir un nouveau token.
- Étape 3 : le nouveau token est ensuite stocké dans des données statiques pour une utilisation future. Ce processus est renforcé par un déclencheur planifié qui permet de vérifier régulièrement la validité des tokens. En intégrant ce workflow, les entreprises peuvent réduire les risques liés à l'expiration des tokens et améliorer la sécurité de leurs systèmes tout en optimisant leur efficacité opérationnelle.
Workflow n8n sécurité, webhook : vue d'ensemble
Schéma des nœuds et connexions de ce workflow n8n, généré à partir du JSON n8n.
Workflow n8n sécurité, webhook : détail des nœuds
Inscris-toi pour voir l'intégralité du workflow
Inscription gratuite
S'inscrire gratuitementBesoin d'aide ?{
"nodes": [
{
"id": "517fad39-50ec-4eae-94c4-aca5b111a093",
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"position": [
-120,
-100
],
"webhookId": "a227afae-e16e-44c2-bb5c-e69fe553b455",
"parameters": {
"path": "a227afae-e16e-44c2-bb5c-e69fe553b455",
"options": {}
},
"typeVersion": 2
},
{
"id": "cbd978df-9b95-4148-a054-7772213f5b8f",
"name": "continue with valid token",
"type": "n8n-nodes-base.noOp",
"position": [
1020,
-40
],
"parameters": {},
"typeVersion": 1
},
{
"id": "65167cf9-3ec5-4727-a604-a318e86bb54e",
"name": "get new accessToken",
"type": "n8n-nodes-base.httpRequest",
"position": [
560,
80
],
"parameters": {
"url": "http://your-api.com",
"options": {
"response": {
"response": {
"fullResponse": true
}
}
}
},
"notesInFlow": false,
"typeVersion": 4.2
},
{
"id": "b17e01d2-c43a-486f-ab08-d81e05f8d110",
"name": "2. set token in static data",
"type": "n8n-nodes-base.code",
"position": [
780,
80
],
"parameters": {
"jsCode": "const workflowStaticData = $getWorkflowStaticData('global');\n\n// get new access token\nworkflowStaticData.accessToken = $input.first().json.AccessToken;\n// set timestamp of new access token\nworkflowStaticData.timestamp = $now.toISO().toString();\n\nreturn [\n {\n // data: $input.all(),\n accessToken: workflowStaticData.accessToken,\n timestamp: workflowStaticData.timestamp,\n // today: $today\n }\n];"
},
"typeVersion": 2
},
{
"id": "31fd494a-f323-47cc-8f89-0bb2f2332e0f",
"name": "Schedule Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-120,
60
],
"parameters": {
"rule": {
"interval": [
{}
]
}
},
"typeVersion": 1.2
},
{
"id": "77623419-99f9-4369-9546-375eaf6f5732",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-180,
240
],
"parameters": {
"width": 660,
"height": 400,
"content": "# StaticData Demo\n\n\nThis workflow demonstrates how to use the [`workflowStaticData()` function](https://docs.n8n.io/code/cookbook/builtin/get-workflow-static-data/\n) to set any type of variable that will persist within workflow executions. \n\nThis can be useful for working with access tokens that expire after a certain time period. \n\nhttps://docs.n8n.io/code/cookbook/builtin/get-workflow-static-data/\n\n## Important\n\nStatic Data only persists across **_production_** executions, i.e. triggered by Webhooks or Schedule Triggers (not manual executions!)\nFor this the workflow will have to be activated. \n\n\n\n"
},
"typeVersion": 1
},
{
"id": "e4cbdbf7-7b3d-4c52-9d41-bc427d63df5d",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
520,
60
],
"parameters": {
"color": 5,
"width": 180,
"height": 420,
"content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n### HTTP Request\n\nToggle \n`Include Response Headers and Status` \noption if access token is not sent in the body"
},
"typeVersion": 1
},
{
"id": "bed68570-bf35-4fa9-984c-1b67a53b59ba",
"name": "if token is valid",
"type": "n8n-nodes-base.if",
"notes": "(1 minute expiration)",
"position": [
340,
-20
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "loose"
},
"combinator": "and",
"conditions": [
{
"id": "65f5c979-3e7d-4e50-92c3-3ae39f1bba3d",
"operator": {
"type": "dateTime",
"operation": "afterOrEquals"
},
"leftValue": "={{ $json.timestamp }}",
"rightValue": "={{ $now.minus(1,'minute') }}"
}
]
},
"looseTypeValidation": true
},
"notesInFlow": true,
"typeVersion": 2.2
},
{
"id": "57a4f5f9-eb77-4fd4-b6b1-55137f108374",
"name": "1. initiate static data",
"type": "n8n-nodes-base.code",
"position": [
120,
-20
],
"parameters": {
"jsCode": "// initialize staticData object\nconst workflowStaticData = $getWorkflowStaticData('global');\n\n// initialize accessToken on staticData if it desn't exist yet\nif (!workflowStaticData.hasOwnProperty('accessToken')) {\n workflowStaticData.accessToken = 0\n}\n\n// initializing any other variables on the staticData object\nif (!workflowStaticData.hasOwnProperty('timestamp')) {\n workflowStaticData.timestamp = $now.toISO()\n}\n\nreturn [\n {\n // data: $input.all(),\n accessToken: workflowStaticData.accessToken,\n timestamp: workflowStaticData.timestamp,\n // today: $today\n }\n];"
},
"notesInFlow": false,
"typeVersion": 2
}
],
"pinData": {
"get new accessToken": [
{
"AccessToken": "5763273631"
}
]
},
"connections": {
"Webhook": {
"main": [
[
{
"node": "1. initiate static data",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger": {
"main": [
[
{
"node": "1. initiate static data",
"type": "main",
"index": 0
}
]
]
},
"if token is valid": {
"main": [
[
{
"node": "continue with valid token",
"type": "main",
"index": 0
}
],
[
{
"node": "get new accessToken",
"type": "main",
"index": 0
}
]
]
},
"get new accessToken": {
"main": [
[
{
"node": "2. set token in static data",
"type": "main",
"index": 0
}
]
]
},
"1. initiate static data": {
"main": [
[
{
"node": "if token is valid",
"type": "main",
"index": 0
}
]
]
},
"2. set token in static data": {
"main": [
[
{
"node": "continue with valid token",
"type": "main",
"index": 0
}
]
]
}
}
}Workflow n8n sécurité, webhook : pour qui est ce workflow ?
Ce workflow s'adresse principalement aux équipes techniques et aux développeurs d'entreprises qui utilisent des API nécessitant une gestion sécurisée des tokens. Les entreprises de taille moyenne à grande, ainsi que celles qui cherchent à automatiser leurs processus d'authentification, trouveront ce workflow particulièrement utile.
Workflow n8n sécurité, webhook : problème résolu
Ce workflow résout le problème de la gestion des tokens d'accès en automatisant leur vérification et leur renouvellement. Cela élimine les frustrations liées aux erreurs d'authentification dues à des tokens expirés, ce qui peut entraîner des interruptions de service. En intégrant cette automatisation, les utilisateurs bénéficient d'une continuité de service et d'une sécurité renforcée, tout en réduisant le temps passé à gérer manuellement les tokens.
Workflow n8n sécurité, webhook : étapes du workflow
Étape 1 : le flux commence par un Webhook qui reçoit les requêtes.
- Étape 1 : une fois la requête reçue, le flux utilise un nœud conditionnel pour vérifier la validité du token.
- Étape 2 : si le token est valide, le flux continue ; sinon, il appelle une API pour obtenir un nouveau token.
- Étape 3 : le nouveau token est enregistré dans des données statiques pour une utilisation future.
- Étape 4 : un déclencheur planifié permet de vérifier régulièrement la validité des tokens, assurant ainsi une gestion proactive.
Workflow n8n sécurité, webhook : guide de personnalisation
Pour personnaliser ce workflow, vous pouvez modifier l'URL du Webhook pour l'adapter à votre application. Il est également possible d'ajuster les paramètres de la demande HTTP pour obtenir un token d'accès spécifique à votre API. Pensez à adapter le code JavaScript dans les nœuds de données statiques pour répondre à vos besoins spécifiques. Enfin, vous pouvez configurer le déclencheur planifié pour définir la fréquence de vérification des tokens selon vos exigences opérationnelles.