Jamf Concepts
Przewodniki

Przewodniki

Form to Wipe — Wdrażanie n8n

~5 min read
Czy to było pomocne?

Form to Wipe — Wdrażanie n8n

Ten przewodnik obejmuje implementację n8n Form to Wipe. Używa polecenia slash Slack do otwarcia modalu, kieruje żądanie do zatwierdzającego za pośrednictwem Slack DM i wysyła polecenia erase za pośrednictwem Jamf Platform API. Zatwierdzający mogą pochodzić z Microsoft Entra, Okta lub Slack usergroup.

Wymagania wstępne

  • n8n self-hosted (≥ 1.30) lub n8n Cloud
  • Aplikacja Slack z wymaganymi zakresami (zobacz Krok 2 poniżej)
  • Klient OAuth2 Jamf Platform API z uprawnieniami erase (zobacz Form to Wipe)
  • Jeden z: Rejestracja aplikacji Microsoft Entra, token API Okta, lub Slack usergroup dla zatwierdzających

Krok 1 — Importuj przepływ pracy

W n8n: Workflows → Import from file → wybierz Jamf-FTW-n8n-template.json.

Przepływ pracy importuje się jako nieaktywny. Nie aktywuj jeszcze — najpierw ukończ konfigurację poświadczeń i zmiennych.

Krok 2 — Poświadczenia

Utwórz następujące poświadczenia w Settings → Credentials przed połączeniem przepływu pracy.

Token autoryzacji Slack

  1. Utwórz aplikację Slack na api.slack.com/apps

  2. Dodaj następujące Bot Token Scopes w OAuth & Permissions:

    Zakres Cel
    commands Odbieraj polecenia slash
    chat:write Wysyłaj DM i wiadomości kanału
    chat:delete Wyczyść wiadomości zatwierdzenia po decyzji
    users:read Wyszukaj użytkowników po ID
    users:read.email Wyszukaj użytkowników po wiadomości e-mail (ścieżki Okta/Entra)
    usergroups:read Przeczytaj członkostwo Slack usergroup
    views:open Otwieraj modale
    views:update Aktualizuj modale przy błędzie walidacji
  3. Zainstaluj aplikację do Twojego workspace i skopiuj Bot User OAuth Token

  4. W n8n: utwórz nowe poświadczenia HTTP Bearer Auth, wklej token, nazwij je Slack Auth Token

Jamf Platform API

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

  2. Przypisz rolę z uprawnieniami wymienionymi w Form to Wipe

    Uwaga na statyczne grupy komputerów: Platform API nie ma natywnego punktu końcowego członkostwa statycznej grupy komputerów. Przepływ pracy wraca do klasycznego API proxy (/api/proclassic/...), który jest pokryty tym samym uprawnieniem Read Computer Groups.

  3. Wygeneruj tajemnicę klienta i zanotuj ID klienta i tajemnicę

  4. W n8n: utwórz nowe poświadczenia OAuth2 API:

    • Grant type: Client Credentials
    • Token URL: https://YOUR_INSTANCE.jamfcloud.com/api/oauth/token
    • Client ID / Secret: z powyżej
  5. Nazwij je Jamf Platform API

Dostęp API Gateway: Przepływ pracy również wywołuje Jamf Platform API Gateway (apigw.jamf.com). Skontaktuj się ze swoim przedstawicielem Jamf, jeśli nie masz dostępu.

Okta API — tylko jeśli IDP_PROVIDER = okta

  1. W Okta: Security → API → Tokens → Create Token
  2. W n8n: utwórz nowe poświadczenia Okta API z Twoją domeną Okta i tokenem
  3. Nazwij je Okta account

Microsoft Entra — tylko jeśli IDP_PROVIDER = entra

  1. W Azure: App registrations → New registration
  2. Dodaj uprawnienie API: GroupMember.Read.All (typ aplikacji) i udziel zgody administratora
  3. Utwórz tajemnicę klienta
  4. W n8n: utwórz nowe poświadczenia Microsoft Entra OAuth2
  5. Nazwij je Microsoft Entra ID (Azure Active Directory) account

Krok 3 — Zmienne

Utwórz każdą zmienną w n8n w Settings → Variables.

Wymagane zmienne

Zmienna Opis Przykład
JAMF_TENANT_NAMES Nazwy wyświetlane rozdzielone przecinkami dla dzierżawców Jamf Production,Staging
JAMF_TENANT_IDS Identyfikatory UUID dzierżawcy rozdzielone przecinkami — ta sama kolejność co nazwy aaaaaaaa-...,bbbbbbbb-...
APPROVER_SOURCE Skąd ściągnąć listę zatwierdzającego: scim, idp, lub dev idp
IDP_PROVIDER Wymagane jeśli APPROVER_SOURCE=idp: entra lub okta entra
APPROVAL_TIMEOUT_SECONDS Jak długo zanim żądanie wygaśnie 3600
AUDIT_LOG_CHANNEL_ID ID kanału Slack dla wszystkich zdarzeń audytu C0123456789
WEBHOOK_VERIFY_TOKEN UUID lub losowa tajemnica — również ustaw w URL polecenia slash Slack your-secret-uuid

Zmienne według źródła zatwierdzającego

Jeśli APPROVER_SOURCE = scim (Slack usergroup):

Zmienna Wartość
APPROVER_USERGROUP_ID ID Slack usergroup — format: S0XXXXXXXX

Jeśli APPROVER_SOURCE = idp + IDP_PROVIDER = okta:

Zmienna Wartość
IDP_OKTA_GROUP_ID ID grupy Okta — format: 00gXXXXXX
IDP_OKTA_SLACK_EMAIL_FIELD Pole profilu do użycia dla wyszukiwania wiadomości e-mail Slack (zwykle email)

Jeśli APPROVER_SOURCE = idp + IDP_PROVIDER = entra:

Zmienna Wartość
ENTRA_APPROVER_GROUP_ID ID obiektu Azure AD grupy zatwierdzającego

Jeśli APPROVER_SOURCE = dev (alternatywny Slack usergroup, do testowania):

Zmienna Wartość
DEV_APPROVER_USERGROUP_ID ID Slack usergroup dla zatwierdzających dev/test

Konfiguracja multi-tenantowa

Zmienne JAMF_TENANT_NAMES i JAMF_TENANT_IDS muszą być w tej samej kolejności — indeks 0 nazw mapuje do indeksu 0 ID. Rozwijana lista dzierżawcy w modalu Slack jest budowana dynamicznie w czasie wykonywania z tych zmiennych; nie jest wymagana dodatkowa konfiguracja dla każdego dzierżawcy.

Region API Gateway: Przepływ pracy domyślnie ustawia na us.apigw.jamf.com. Jeśli Twoje dzierżawcy są w EU lub APAC, zaktualizuj stałą REGION w węzłach kodu Find Group + Build Members URL i Determine Management Id Lookup URL.

Krok 4 — Konfiguracja aplikacji Slack

Polecenie Slash

  1. W aplikacji Slack: Slash Commands → Create New Command
  2. Command: /device-wipe (lub Twoja preferowana nazwa)
  3. Request URL: https://YOUR_N8N_INSTANCE/webhook/jamf-device-wipe?token=YOUR_WEBHOOK_VERIFY_TOKEN
  4. Short description: Submit a Jamf device wipe request

Interaktywność

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

Zarówno polecenie slash jak i komponenty interaktywne (przesyłania modalu, kliknięcia przycisku) muszą wskazywać na ten sam URL webhook ze swoim tokenem weryfikacji jako parametrem zapytania.

Krok 5 — Aktywuj

  1. Otwórz przepływ pracy w n8n
  2. Ponownie połącz każdy węzeł do jego poświadczeń (n8n czyści linki poświadczeń przy imporcie)
  3. Kliknij Activate
  4. Przetestuj /device-wipe w Slack

Podsumowanie przepływu

/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

Rozwiązywanie problemów

Modal się nie otwiera Sprawdź, czy URL żądania polecenia slash zawiera ?token=YOUR_WEBHOOK_VERIFY_TOKEN. Węzeł Verify Token odrzuca żądania, gdzie token się nie zgadza.

Lista zatwierdzającego jest pusta

  • scim: potwierdź, że APPROVER_USERGROUP_ID jest poprawny i aplikacja Slack ma usergroups:read
  • okta: potwierdź IDP_OKTA_GROUP_ID i że poświadczenia Okta mają dostęp do odczytu grupy
  • entra: potwierdź ENTRA_APPROVER_GROUP_ID i że aplikacja Entra ma GroupMember.Read.All

Polecenie Erase zwraca 4xx Potwierdź, że poświadczenia Jamf Platform API mają uprawnienia erase i że używasz prawidłowego regionu API Gateway.

Rozwijana lista dzierżawcy pokazuje wartości zastępcze Ustaw zmienne JAMF_TENANT_NAMES i JAMF_TENANT_IDS przed aktywacją przepływu pracy.

Czy to było pomocne?