Jamf Concepts
Guides

Guides

Form to Wipe — Déploiement n8n

~6 min read
Cela vous a-t-il été utile ?

Form to Wipe — Déploiement n8n

Ce guide couvre l'implémentation n8n de Form to Wipe. Il utilise une commande slash Slack pour ouvrir une modal, achemine la demande à un approbateur via Slack DM, et envoie les commandes d'effacement via la Jamf Platform API. Les approbateurs peuvent provenir de Microsoft Entra, Okta ou d'un groupe d'utilisateurs Slack.

Prérequis

  • n8n auto-hébergé (≥ 1.30) ou n8n Cloud
  • Application Slack avec les périmètres requis (voir Étape 2 ci-dessous)
  • Client OAuth2 de l'API Jamf Platform avec privilèges d'effacement (voir Form to Wipe)
  • L'un des suivants : enregistrement d'application Microsoft Entra, jeton API Okta, ou groupe d'utilisateurs Slack pour les approbateurs

Étape 1 — Importer le workflow

Dans n8n : Workflows → Import from file → sélectionnez Jamf-FTW-n8n-template.json.

Le workflow s'importe comme inactif. N'activez pas encore — complétez d'abord la configuration des accréditations et des variables.

Étape 2 — Accréditations

Créez les accréditations suivantes dans Settings → Credentials avant de câbler le workflow.

Slack Auth Token

  1. Créez une application Slack à api.slack.com/apps

  2. Ajoutez les Bot Token Scopes suivants sous OAuth & Permissions :

    Périmètre Objectif
    commands Recevoir les commandes slash
    chat:write Envoyer des DM et des messages de canal
    chat:delete Nettoyer les messages d'approbation après une décision
    users:read Rechercher les utilisateurs par ID
    users:read.email Rechercher les utilisateurs par email (chemins Okta/Entra)
    usergroups:read Lire l'appartenance au groupe d'utilisateurs Slack
    views:open Ouvrir des modales
    views:update Mettre à jour les modales en cas d'erreur de validation
  3. Installez l'application dans votre espace de travail et copiez le Bot User OAuth Token

  4. Dans n8n : créez une nouvelle accréditation HTTP Bearer Auth, collez le jeton, nommez-la Slack Auth Token

Jamf Platform API

  1. Dans Jamf Pro : Settings → API roles and clients → API Clients → New

  2. Attribuez un rôle avec les privilèges listés dans Form to Wipe

    Remarque sur les groupes d'ordinateurs statiques : La Platform API n'a pas de point de terminaison d'appartenance au groupe d'ordinateurs statique natif. Le workflow revient au proxy de l'API classique (/api/proclassic/...), qui est couvert par le même privilège Read Computer Groups.

  3. Générez un secret client et notez l'ID client et le Secret

  4. Dans n8n : créez une nouvelle accréditation OAuth2 API :

    • Type d'octroi : Client Credentials
    • Token URL : https://YOUR_INSTANCE.jamfcloud.com/api/oauth/token
    • Client ID / Secret : de ce qui précède
  5. Nommez-la Jamf Platform API

Accès à la passerelle API : Le workflow appelle également la passerelle de l'API Jamf Platform (apigw.jamf.com). Contactez votre représentant Jamf si vous n'avez pas accès.

Okta API — uniquement si IDP_PROVIDER = okta

  1. Dans Okta : Security → API → Tokens → Create Token
  2. Dans n8n : créez une nouvelle accréditation Okta API avec votre domaine Okta et le jeton
  3. Nommez-la Okta account

Microsoft Entra — uniquement si IDP_PROVIDER = entra

  1. Dans Azure : App registrations → New registration
  2. Ajoutez la permission d'API : GroupMember.Read.All (type Application) et accordez le consentement administrateur
  3. Créez un secret client
  4. Dans n8n : créez une nouvelle accréditation Microsoft Entra OAuth2
  5. Nommez-la Microsoft Entra ID (Azure Active Directory) account

Étape 3 — Variables

Créez chaque variable dans n8n sous Settings → Variables.

Variables requises

Variable Description Exemple
JAMF_TENANT_NAMES Noms d'affichage séparés par des virgules pour vos tenants Jamf Production,Staging
JAMF_TENANT_IDS UUID de tenants séparés par des virgules — même ordre que les noms aaaaaaaa-...,bbbbbbbb-...
APPROVER_SOURCE Où extraire la liste des approbateurs : scim, idp, ou dev idp
IDP_PROVIDER Requis si APPROVER_SOURCE=idp : entra ou okta entra
APPROVAL_TIMEOUT_SECONDS Combien de temps avant l'expiration de la demande 3600
AUDIT_LOG_CHANNEL_ID ID du canal Slack pour tous les événements d'audit C0123456789
WEBHOOK_VERIFY_TOKEN Un UUID ou un secret aléatoire — également défini dans l'URL de commande slash Slack your-secret-uuid

Variables par source d'approbateur

Si APPROVER_SOURCE = scim (groupe d'utilisateurs Slack) :

Variable Valeur
APPROVER_USERGROUP_ID ID du groupe d'utilisateurs Slack — format : S0XXXXXXXX

Si APPROVER_SOURCE = idp + IDP_PROVIDER = okta :

Variable Valeur
IDP_OKTA_GROUP_ID ID du groupe Okta — format : 00gXXXXXX
IDP_OKTA_SLACK_EMAIL_FIELD Champ de profil à utiliser pour la recherche d'e-mail Slack (généralement email)

Si APPROVER_SOURCE = idp + IDP_PROVIDER = entra :

Variable Valeur
ENTRA_APPROVER_GROUP_ID ID d'objet Azure AD du groupe d'approbateurs

Si APPROVER_SOURCE = dev (autre groupe d'utilisateurs Slack, pour les tests) :

Variable Valeur
DEV_APPROVER_USERGROUP_ID ID du groupe d'utilisateurs Slack pour les approbateurs de dev/test

Configuration multi-tenant

Les variables JAMF_TENANT_NAMES et JAMF_TENANT_IDS doivent être dans le même ordre — l'index 0 des noms correspond à l'index 0 des ID. La liste déroulante de tenants dans la modal Slack est construite dynamiquement lors de l'exécution à partir de ces variables ; aucune configuration supplémentaire par tenant n'est nécessaire.

Région de la passerelle API : Le workflow utilise par défaut us.apigw.jamf.com. Si vos tenants sont en EU ou APAC, mettez à jour la constante REGION dans les nœuds de code Find Group + Build Members URL et Determine Management Id Lookup URL.

Étape 4 — Configuration de l'application Slack

Slash Command

  1. Dans votre application Slack : Slash Commands → Create New Command
  2. Commande : /device-wipe (ou votre nom préféré)
  3. Request URL : https://YOUR_N8N_INSTANCE/webhook/jamf-device-wipe?token=YOUR_WEBHOOK_VERIFY_TOKEN
  4. Description courte : Submit a Jamf device wipe request

Interactivité

  1. Dans votre application Slack : Interactivity & Shortcuts → Turn On
  2. Request URL : https://YOUR_N8N_INSTANCE/webhook/jamf-device-wipe?token=YOUR_WEBHOOK_VERIFY_TOKEN

La commande slash et les composants interactifs (soumissions modales, clics de bouton) doivent pointer vers la même URL webhook avec votre jeton de vérification comme paramètre de requête.

Étape 5 — Activer

  1. Ouvrez le workflow dans n8n
  2. Reliez à nouveau chaque nœud à sa accréditation (n8n efface les liens d'accréditation à l'importation)
  3. Cliquez sur Activate
  4. Testez avec /device-wipe dans Slack

Résumé du flux

/device-wipe (Slack)
  → Webhook → Verify Token → Parse Webhook
  → Switch on webhook type:
      slash_command       → Open Wipe Request Modal
      view_submission     → Parse Submission → Validate →
                            Resolve Device IDs → Send to Approval
      approver_response   → approve: LOG → Parse → Send Final Confirmation to Requestor
                          → deny:    LOG → DM Requestor
      final_confirmation  → confirm: LOG → Split per-device →
                                          Send Erase Command × N →
                                          Merge Results → DM Results → LOG
                          → cancel:  LOG → DM Requestor
      timeout path        → DM Requestor if no approval within APPROVAL_TIMEOUT_SECONDS

Dépannage

La modal ne s'ouvre pas Vérifiez que l'URL de la demande de commande slash inclut ?token=YOUR_WEBHOOK_VERIFY_TOKEN. Le nœud Verify Token rejette les demandes où le jeton ne correspond pas.

La liste des approbateurs est vide

  • scim : confirmez que APPROVER_USERGROUP_ID est correct et que l'application Slack a usergroups:read
  • okta : confirmez IDP_OKTA_GROUP_ID et que l'accréditation Okta a accès à la lecture de groupe
  • entra : confirmez ENTRA_APPROVER_GROUP_ID et que l'application Entra a GroupMember.Read.All

La commande d'effacement retourne 4xx Confirmez que l'accréditation de l'API Jamf Platform a des privilèges d'effacement et que vous utilisez la bonne région de la passerelle API.

La liste déroulante de tenants affiche des valeurs d'espace réservé Définissez les variables JAMF_TENANT_NAMES et JAMF_TENANT_IDS avant d'activer le workflow.

Cela vous a-t-il été utile ?