Jamf Concepts
Anleitungen

Anleitungen

Form to Wipe — n8n Deployment

~5 min read
War das hilfreich?

Form to Wipe — n8n Deployment

Dieses Handbuch behandelt die n8n-Implementierung von Form to Wipe. Es verwendet einen Slack-Slash-Befehl, um ein Modal zu öffnen, leitet die Anfrage über Slack DM an einen Genehmiger weiter und sendet Löschbefehle über die Jamf Platform API. Genehmiger können aus Microsoft Entra, Okta oder einer Slack-Usergroup sourced werden.

Voraussetzungen

  • n8n selbst gehostet (≥ 1.30) oder n8n Cloud
  • Slack-App mit erforderlichen Bereichen (siehe Schritt 2 unten)
  • Jamf Platform API OAuth2-Client mit Löschberechtigungen (siehe Form to Wipe)
  • Einer von: Microsoft Entra-App-Registrierung, Okta API-Token oder eine Slack-Usergroup für Genehmiger

Schritt 1 — Workflow importieren

In n8n: Workflows → Import from file → wählen Sie Jamf-FTW-n8n-template.json.

Der Workflow wird als inaktiv importiert. Aktivieren Sie noch nicht — führen Sie zunächst Credential- und Variablen-Setup durch.

Schritt 2 — Credentials

Erstellen Sie die folgenden Credentials in Settings → Credentials, bevor Sie den Workflow verbinden.

Slack Auth Token

  1. Erstellen Sie eine Slack-App unter api.slack.com/apps

  2. Fügen Sie die folgenden Bot Token Scopes unter OAuth & Permissions hinzu:

    Scope Zweck
    commands Slash-Befehle empfangen
    chat:write DMs und Kanalnachrichten senden
    chat:delete Genehmigungsnachrichten nach einer Entscheidung bereinigen
    users:read Benutzer nach ID nachschlagen
    users:read.email Benutzer nach E-Mail nachschlagen (Okta/Entra-Pfade)
    usergroups:read Slack-Usergroup-Mitgliedschaft lesen
    views:open Modals öffnen
    views:update Modals bei Validierungsfehler aktualisieren
  3. Installieren Sie die App in Ihrem Workspace und kopieren Sie den Bot User OAuth Token

  4. In n8n: erstellen Sie einen neuen HTTP Bearer Auth-Credential, fügen Sie das Token ein, nennen Sie es Slack Auth Token

Jamf Platform API

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

  2. Weisen Sie eine Rolle mit den in Form to Wipe aufgelisteten Berechtigungen zu

    Hinweis zu statischen Computergruppen: Die Platform API hat keinen nativen Endpoint für statische Computergruppen-Mitgliedschaft. Der Workflow fällt auf den Classic API-Proxy (/api/proclassic/...) zurück, der von der gleichen Read Computer Groups-Berechtigung abgedeckt ist.

  3. Generieren Sie ein Client-Secret und notieren Sie die Client-ID und Secret

  4. In n8n: erstellen Sie einen neuen OAuth2 API-Credential:

    • Grant type: Client Credentials
    • Token URL: https://YOUR_INSTANCE.jamfcloud.com/api/oauth/token
    • Client ID / Secret: von oben
  5. Nennen Sie es Jamf Platform API

API Gateway-Zugang: Der Workflow ruft auch das Jamf Platform API Gateway (apigw.jamf.com) auf. Kontaktieren Sie Ihren Jamf-Vertreter, wenn Sie keinen Zugang haben.

Okta API — nur wenn IDP_PROVIDER = okta

  1. In Okta: Security → API → Tokens → Create Token
  2. In n8n: erstellen Sie einen neuen Okta API-Credential mit Ihrer Okta-Domain und dem Token
  3. Nennen Sie es Okta account

Microsoft Entra — nur wenn IDP_PROVIDER = entra

  1. In Azure: App registrations → New registration
  2. API-Berechtigung hinzufügen: GroupMember.Read.All (Anwendungstyp) und Admin-Zustimmung erteilen
  3. Erstellen Sie ein Client-Secret
  4. In n8n: erstellen Sie einen neuen Microsoft Entra OAuth2-Credential
  5. Nennen Sie es Microsoft Entra ID (Azure Active Directory) account

Schritt 3 — Variablen

Erstellen Sie jede Variable in n8n unter Settings → Variables.

Erforderliche Variablen

Variable Beschreibung Beispiel
JAMF_TENANT_NAMES Komma-getrennte Anzeigenamen für Ihre Jamf-Tenants Production,Staging
JAMF_TENANT_IDS Komma-getrennte Tenant-UUIDs — gleiche Reihenfolge wie Namen aaaaaaaa-...,bbbbbbbb-...
APPROVER_SOURCE Wo die Genehmiger-Liste gezogen werden soll: scim, idp oder dev idp
IDP_PROVIDER Erforderlich wenn APPROVER_SOURCE=idp: entra oder okta entra
APPROVAL_TIMEOUT_SECONDS Wie lange die Anfrage gültig ist 3600
AUDIT_LOG_CHANNEL_ID Slack-Kanal-ID für alle Audit-Ereignisse C0123456789
WEBHOOK_VERIFY_TOKEN Eine UUID oder ein zufälliges Secret — auch in der Slack-Slash-Befehl-URL gesetzt your-secret-uuid

Variablen nach Genehmiger-Quelle

Wenn APPROVER_SOURCE = scim (Slack-Usergroup):

Variable Wert
APPROVER_USERGROUP_ID Slack-Usergroup-ID — Format: S0XXXXXXXX

Wenn APPROVER_SOURCE = idp + IDP_PROVIDER = okta:

Variable Wert
IDP_OKTA_GROUP_ID Okta-Gruppen-ID — Format: 00gXXXXXX
IDP_OKTA_SLACK_EMAIL_FIELD Profilfeld für die Slack-E-Mail-Suche (normalerweise email)

Wenn APPROVER_SOURCE = idp + IDP_PROVIDER = entra:

Variable Wert
ENTRA_APPROVER_GROUP_ID Azure AD Object ID Ihrer Genehmiger-Gruppe

Wenn APPROVER_SOURCE = dev (alternative Slack-Usergroup, zum Testen):

Variable Wert
DEV_APPROVER_USERGROUP_ID Slack-Usergroup-ID für Dev/Test-Genehmiger

Multi-Tenant-Konfiguration

Die Variablen JAMF_TENANT_NAMES und JAMF_TENANT_IDS müssen in der gleichen Reihenfolge sein — Index 0 der Namen wird auf Index 0 der IDs abgebildet. Das Tenant-Dropdown im Slack-Modal wird zur Laufzeit dynamisch aus diesen Variablen erstellt; keine zusätzliche Pro-Tenant-Konfiguration ist erforderlich.

API Gateway-Region: Der Workflow wird standardmäßig auf us.apigw.jamf.com eingestellt. Wenn sich Ihre Tenants in EU oder APAC befinden, aktualisieren Sie die REGION-Konstante in den Code-Nodes Find Group + Build Members URL und Determine Management Id Lookup URL.

Schritt 4 — Slack App Setup

Slash-Befehl

  1. In Ihrer Slack-App: Slash Commands → Create New Command
  2. Befehl: /device-wipe (oder Ihr bevorzugter Name)
  3. Request URL: https://YOUR_N8N_INSTANCE/webhook/jamf-device-wipe?token=YOUR_WEBHOOK_VERIFY_TOKEN
  4. Kurzbeschreibung: Submit a Jamf device wipe request

Interaktivität

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

Sowohl der Slash-Befehl als auch die interaktiven Komponenten (Modal-Übermittlungen, Button-Klicks) müssen auf die gleiche Webhook-URL mit Ihrem Verify-Token als Query-Parameter zeigen.

Schritt 5 — Aktivieren

  1. Öffnen Sie den Workflow in n8n
  2. Verbinden Sie jeden Node erneut mit seinen Credentials (n8n löscht Credential-Links beim Import)
  3. Klicken Sie auf Activate
  4. Testen Sie mit /device-wipe in Slack

Flow-Zusammenfassung

/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

Troubleshooting

Modal öffnet sich nicht Überprüfen Sie, dass die Slash-Befehl-Request-URL ?token=YOUR_WEBHOOK_VERIFY_TOKEN enthält. Der Verify Token-Node lehnt Anfragen ab, bei denen das Token nicht übereinstimmt.

Genehmiger-Liste ist leer

  • scim: bestätigen Sie, dass APPROVER_USERGROUP_ID korrekt ist und die Slack-App usergroups:read hat
  • okta: bestätigen Sie IDP_OKTA_GROUP_ID und dass das Okta-Credential Gruppenlese-Zugang hat
  • entra: bestätigen Sie ENTRA_APPROVER_GROUP_ID und dass die Entra-App GroupMember.Read.All hat

Löschbefehl gibt 4xx zurück Bestätigen Sie, dass das Jamf Platform API-Credential Löschberechtigungen hat und dass Sie die korrekte API Gateway-Region verwenden.

Tenant-Dropdown zeigt Platzhalterwerte Legen Sie JAMF_TENANT_NAMES und JAMF_TENANT_IDS-Variablen fest, bevor Sie den Workflow aktivieren.

War das hilfreich?