Jamf Concepts
Handleidingen

Handleidingen

Form to Wipe — n8n Deployment

~5 min read
Was dit nuttig?

Form to Wipe — n8n Deployment

Deze gids behandelt de n8n-implementatie van Form to Wipe. Het gebruikt een Slack slash command om een modal te openen, stuurt het verzoek naar een fiatteur via Slack DM en stuurt wiscommando's via de Jamf Platform API. Fiatteurs kunnen afkomstig zijn van Microsoft Entra, Okta of een Slack usergroup.

Vereisten

  • n8n self-hosted (≥ 1.30) of n8n Cloud
  • Slack-app met vereiste scopes (zie Stap 2 hieronder)
  • Jamf Platform API OAuth2-client met wisrechten (zie Form to Wipe)
  • Een van: Microsoft Entra app-registratie, Okta API-token of een Slack usergroup voor fiatteurs

Stap 1 — Workflow importeren

In n8n: Workflows → Import from file → selecteer Jamf-FTW-n8n-template.json.

De workflow wordt als inactief geïmporteerd. Activeer nog niet — voltooi eerst credential- en variabeleinstellingen.

Stap 2 — Inloggegevens

Maak de volgende inloggegevens aan in Settings → Credentials voordat u de werkstroom bekabelt.

Slack Auth Token

  1. Maak een Slack-app aan op api.slack.com/apps

  2. Voeg de volgende Bot Token Scopes toe onder OAuth & Permissions:

    Scope Doel
    commands Slash commands ontvangen
    chat:write DM's en kanaalberichten verzenden
    chat:delete Goedkeuringsberichten opschonen na een besluit
    users:read Gebruikers op ID opzoeken
    users:read.email Gebruikers op e-mail opzoeken (Okta/Entra paden)
    usergroups:read Slack usergroup-lidmaatschap lezen
    views:open Modals openen
    views:update Modals bijwerken bij validatiefout
  3. Installeer de app in uw werkruimte en kopieer het Bot User OAuth Token

  4. In n8n: maak een nieuwe HTTP Bearer Auth credential aan, plak het token, noem het Slack Auth Token

Jamf Platform API

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

  2. Wijs een rol toe met de bevoegdheden uit Form to Wipe

    Opmerking over statische computergroepen: De Platform API heeft geen native eindpunt voor statische computergroeplidmaatschap. De werkstroom valt terug op de Classic API-proxy (/api/proclassic/...), die wordt gedekt door dezelfde Read Computer Groups bevoegdheid.

  3. Genereer een client secret en noteer de Client ID en Secret

  4. In n8n: maak een nieuwe OAuth2 API credential aan:

    • Grant type: Client Credentials
    • Token URL: https://YOUR_INSTANCE.jamfcloud.com/api/oauth/token
    • Client ID / Secret: van hierboven
  5. Noem het Jamf Platform API

API Gateway-toegang: De werkstroom roept ook de Jamf Platform API Gateway (apigw.jamf.com) aan. Neem contact op met uw Jamf-vertegenwoordiger als u geen toegang hebt.

Okta API — alleen als IDP_PROVIDER = okta

  1. In Okta: Security → API → Tokens → Create Token
  2. In n8n: maak een nieuwe Okta API credential aan met uw Okta-domein en -token
  3. Noem het Okta account

Microsoft Entra — alleen als IDP_PROVIDER = entra

  1. In Azure: App registrations → New registration
  2. Voeg API-machtiging toe: GroupMember.Read.All (Application type) en verleen admin toestemming
  3. Maak een client secret
  4. In n8n: maak een nieuwe Microsoft Entra OAuth2 credential aan
  5. Noem het Microsoft Entra ID (Azure Active Directory) account

Stap 3 — Variabelen

Maak elke variabele aan in n8n onder Settings → Variables.

Vereiste variabelen

Variabele Beschrijving Voorbeeld
JAMF_TENANT_NAMES Door komma's gescheiden weergavenamen voor uw Jamf-tenants Production,Staging
JAMF_TENANT_IDS Door komma's gescheiden tenant UUID's — dezelfde volgorde als namen aaaaaaaa-...,bbbbbbbb-...
APPROVER_SOURCE Waar moet de fiatteurlijst vandaan komen: scim, idp of dev idp
IDP_PROVIDER Vereist als APPROVER_SOURCE=idp: entra of okta entra
APPROVAL_TIMEOUT_SECONDS Hoe lang voordat het verzoek verloopt 3600
AUDIT_LOG_CHANNEL_ID Slack kanaal-ID voor alle auditgebeurtenissen C0123456789
WEBHOOK_VERIFY_TOKEN Een UUID of willekeurig geheim — ook ingesteld in de Slack slash command URL your-secret-uuid

Variabelen per fiatteur bron

Als APPROVER_SOURCE = scim (Slack usergroup):

Variabele Waarde
APPROVER_USERGROUP_ID Slack usergroup ID — indeling: S0XXXXXXXX

Als APPROVER_SOURCE = idp + IDP_PROVIDER = okta:

Variabele Waarde
IDP_OKTA_GROUP_ID Okta groep-ID — indeling: 00gXXXXXX
IDP_OKTA_SLACK_EMAIL_FIELD Profielveld voor Slack-e-mailopzoeking (meestal email)

Als APPROVER_SOURCE = idp + IDP_PROVIDER = entra:

Variabele Waarde
ENTRA_APPROVER_GROUP_ID Azure AD Object ID van uw fiatteurgroep

Als APPROVER_SOURCE = dev (alternatieve Slack usergroup, voor testen):

Variabele Waarde
DEV_APPROVER_USERGROUP_ID Slack usergroup ID voor dev/test fiatteurs

Multi-Tenant-configuratie

De variabelen JAMF_TENANT_NAMES en JAMF_TENANT_IDS moeten in dezelfde volgorde staan — index 0 van namen wijst toe aan index 0 van ID's. De tenant-vervolgkeuzelijst in de Slack-modal wordt dynamisch in runtime samengesteld uit deze variabelen; geen aanvullende configuratie per tenant is nodig.

API Gateway-regio: De werkstroom gebruikt standaard us.apigw.jamf.com. Als uw tenants in EU of APAC zijn, werk de REGION constante bij in de Find Group + Build Members URL en Determine Management Id Lookup URL code nodes.

Stap 4 — Slack App Instellen

Slash Command

  1. In uw Slack-app: Slash Commands → Create New Command
  2. Command: /device-wipe (of uw voorkeursnaam)
  3. Request URL: https://YOUR_N8N_INSTANCE/webhook/jamf-device-wipe?token=YOUR_WEBHOOK_VERIFY_TOKEN
  4. Korte beschrijving: Submit a Jamf device wipe request

Interactiviteit

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

Zowel de slash command als interactieve componenten (modal-indieningen, klikken op knoppen) moeten naar dezelfde webhook-URL wijzen met uw verificatie token als queryparameter.

Stap 5 — Activeren

  1. Open de werkstroom in n8n
  2. Koppel elke node opnieuw aan zijn credential (n8n wist credential-koppelingen bij import)
  3. Klik op Activate
  4. Test met /device-wipe in Slack

Flow samenvatting

/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

Probleemoplossing

Modal opent niet Controleer of de slash command Request URL ?token=YOUR_WEBHOOK_VERIFY_TOKEN bevat. De Verify Token node wijst verzoeken af waarbij het token niet overeenkomt.

Fiatteurlijst is leeg

  • scim: controleer of APPROVER_USERGROUP_ID correct is en de Slack-app usergroups:read heeft
  • okta: controleer IDP_OKTA_GROUP_ID en dat de Okta-credential groepsleestoegang heeft
  • entra: controleer ENTRA_APPROVER_GROUP_ID en dat de Entra-app GroupMember.Read.All heeft

Wiscommando retourneert 4xx Controleer of de Jamf Platform API-credential wisrechten heeft en of u de juiste API Gateway-regio gebruikt.

Tenant-vervolgkeuzelijst toont tijdelijke aanduidingswaarden Stel JAMF_TENANT_NAMES en JAMF_TENANT_IDS variabelen in voordat u de werkstroom activeert.

Was dit nuttig?