Jamf Concepts
Guías

Guías

Form to Wipe — Implementación n8n

~7 min read
¿Fue útil?

Form to Wipe — Implementación n8n

Esta guía cubre la implementación n8n de Form to Wipe. Utiliza un comando de barra diagonal de Slack para abrir una modal, enruta la solicitud a un aprobador a través de DM de Slack, y envía comandos de borrado a través de la Jamf Platform API. Los aprobadores se pueden obtener de Microsoft Entra, Okta, o un grupo de usuarios de Slack.

Requisitos previos

  • n8n autohospedado (≥ 1.30) o n8n Cloud
  • Aplicación Slack con los scopes requeridos (ver Paso 2 a continuación)
  • Cliente OAuth2 de la Jamf Platform API con privilegios de borrado (ver Form to Wipe)
  • Uno de: Registro de aplicación de Microsoft Entra, token API de Okta, o un grupo de usuarios de Slack para aprobadores

Paso 1 — Importar el flujo de trabajo

En n8n: Workflows → Import from file → seleccione Jamf-FTW-n8n-template.json.

El flujo de trabajo se importa como inactivo. No lo active aún — complete primero la configuración de credenciales y variables.

Paso 2 — Credenciales

Cree las siguientes credenciales en Settings → Credentials antes de conectar el flujo de trabajo.

Token de autenticación de Slack

  1. Cree una aplicación Slack en api.slack.com/apps

  2. Agregue los siguientes Bot Token Scopes en OAuth & Permissions:

    Scope Propósito
    commands Recibir comandos de barra diagonal
    chat:write Enviar DMs y mensajes de canal
    chat:delete Limpiar mensajes de aprobación después de una decisión
    users:read Buscar usuarios por ID
    users:read.email Buscar usuarios por correo electrónico (rutas de Okta/Entra)
    usergroups:read Leer pertenencia a grupo de usuarios de Slack
    views:open Abrir modales
    views:update Actualizar modales en error de validación
  3. Instale la aplicación en su espacio de trabajo y copie el Bot User OAuth Token

  4. En n8n: cree una nueva credencial HTTP Bearer Auth, pegue el token, asígnele el nombre Slack Auth Token

Jamf Platform API

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

  2. Asigne un rol con los privilegios enumerados en Form to Wipe

    Nota sobre grupos de computadoras estáticos: La Platform API no tiene un punto final nativo de pertenencia a grupo de computadoras estáticas. El flujo de trabajo recurre al proxy de Classic API (/api/proclassic/...), que está cubierto por el mismo privilegio Read Computer Groups.

  3. Genere un secreto de cliente y anote el ID de cliente y el secreto

  4. En n8n: cree una nueva credencial OAuth2 API:

    • Grant type: Client Credentials
    • Token URL: https://YOUR_INSTANCE.jamfcloud.com/api/oauth/token
    • Client ID / Secret: del anterior
  5. Asígnele el nombre Jamf Platform API

Acceso a API Gateway: El flujo de trabajo también llama a la Jamf Platform API Gateway (apigw.jamf.com). Póngase en contacto con su representante de Jamf si no tiene acceso.

Okta API — solo si IDP_PROVIDER = okta

  1. En Okta: Security → API → Tokens → Create Token
  2. En n8n: cree una nueva credencial Okta API con su dominio Okta y el token
  3. Asígnele el nombre Okta account

Microsoft Entra — solo si IDP_PROVIDER = entra

  1. En Azure: App registrations → New registration
  2. Agregue permiso de API: GroupMember.Read.All (tipo de aplicación) y otorgue consentimiento de administrador
  3. Cree un secreto de cliente
  4. En n8n: cree una nueva credencial Microsoft Entra OAuth2
  5. Asígnele el nombre Microsoft Entra ID (Azure Active Directory) account

Paso 3 — Variables

Cree cada variable en n8n en Settings → Variables.

Variables requeridas

Variable Descripción Ejemplo
JAMF_TENANT_NAMES Nombres mostrados separados por comas para sus inquilinos Jamf Production,Staging
JAMF_TENANT_IDS UUIDs de inquilino separados por comas — mismo orden que los nombres aaaaaaaa-...,bbbbbbbb-...
APPROVER_SOURCE De dónde obtener la lista de aprobadores: scim, idp, o dev idp
IDP_PROVIDER Requerido si APPROVER_SOURCE=idp: entra u okta entra
APPROVAL_TIMEOUT_SECONDS Cuánto tiempo antes de que la solicitud expire 3600
AUDIT_LOG_CHANNEL_ID ID de canal de Slack para todos los eventos de auditoría C0123456789
WEBHOOK_VERIFY_TOKEN Un UUID o secreto aleatorio — también establecer en la URL del comando de barra diagonal de Slack your-secret-uuid

Variables por origen de aprobador

Si APPROVER_SOURCE = scim (Grupo de usuarios de Slack):

Variable Valor
APPROVER_USERGROUP_ID ID de grupo de usuarios de Slack — formato: S0XXXXXXXX

Si APPROVER_SOURCE = idp + IDP_PROVIDER = okta:

Variable Valor
IDP_OKTA_GROUP_ID ID de grupo de Okta — formato: 00gXXXXXX
IDP_OKTA_SLACK_EMAIL_FIELD Campo de perfil a usar para búsqueda de correo electrónico de Slack (generalmente email)

Si APPROVER_SOURCE = idp + IDP_PROVIDER = entra:

Variable Valor
ENTRA_APPROVER_GROUP_ID ID de objeto de Azure AD de su grupo de aprobadores

Si APPROVER_SOURCE = dev (grupo de usuarios de Slack alternativo, para pruebas):

Variable Valor
DEV_APPROVER_USERGROUP_ID ID de grupo de usuarios de Slack para aprobadores de desarrollo/prueba

Configuración multi-inquilino

Las variables JAMF_TENANT_NAMES y JAMF_TENANT_IDS deben estar en el mismo orden — el índice 0 de nombres se asigna al índice 0 de IDs. La lista desplegable de inquilino en la modal de Slack se construye dinámicamente en tiempo de ejecución a partir de estas variables; no se requiere configuración adicional por inquilino.

Región de API Gateway: El flujo de trabajo usa de forma predeterminada us.apigw.jamf.com. Si sus inquilinos están en UE o APAC, actualice la constante REGION en los nodos de código Find Group + Build Members URL y Determine Management Id Lookup URL.

Paso 4 — Configuración de aplicación Slack

Comando de barra diagonal

  1. En su aplicación Slack: Slash Commands → Create New Command
  2. Comando: /device-wipe (o su nombre preferido)
  3. Request URL: https://YOUR_N8N_INSTANCE/webhook/jamf-device-wipe?token=YOUR_WEBHOOK_VERIFY_TOKEN
  4. Descripción breve: Submit a Jamf device wipe request

Interactividad

  1. En su aplicación Slack: Interactivity & Shortcuts → Turn On
  2. Request URL: https://YOUR_N8N_INSTANCE/webhook/jamf-device-wipe?token=YOUR_WEBHOOK_VERIFY_TOKEN

Tanto el comando de barra diagonal como los componentes interactivos (envíos de modal, clics de botón) deben apuntar a la misma URL de webhook con su token de verificación como parámetro de consulta.

Paso 5 — Activar

  1. Abra el flujo de trabajo en n8n
  2. Reconecte cada nodo a su credencial (n8n limpia los enlaces de credenciales al importar)
  3. Haga clic en Activate
  4. Pruebe con /device-wipe en Slack

Resumen de flujo

/device-wipe (Slack)
  → Webhook → Verificar token → Analizar Webhook
  → Cambiar en tipo de webhook:
      slash_command       → Abrir modal de solicitud de borrado
      view_submission     → Analizar envío → Validar →
                            Resolver IDs de dispositivos → Enviar a aprobación
      approver_response   → aprobar: REGISTRAR → Analizar → Enviar confirmación final al solicitante
                          → rechazar: REGISTRAR → DM solicitante
      final_confirmation  → confirmar: REGISTRAR → Dividir por dispositivo →
                                          Enviar comando de borrado × N →
                                          Combinar resultados → DM resultados → REGISTRAR
                          → cancelar: REGISTRAR → DM solicitante
      ruta de tiempo de espera → DM solicitante si no hay aprobación dentro de APPROVAL_TIMEOUT_SECONDS

Solución de problemas

La modal no se abre Verifique que la URL de Request del comando de barra diagonal incluya ?token=YOUR_WEBHOOK_VERIFY_TOKEN. El nodo Verify Token rechaza las solicitudes donde el token no coincide.

La lista de aprobadores está vacía

  • scim: confirme que APPROVER_USERGROUP_ID es correcto y que la aplicación Slack tiene usergroups:read
  • okta: confirme IDP_OKTA_GROUP_ID y que la credencial de Okta tiene acceso de lectura de grupos
  • entra: confirme ENTRA_APPROVER_GROUP_ID y que la aplicación Entra tiene GroupMember.Read.All

El comando de borrado devuelve 4xx Confirme que la credencial de la Jamf Platform API tiene privilegios de borrado y que está utilizando la región de API Gateway correcta.

La lista desplegable de inquilino muestra valores de marcador de posición Configure las variables JAMF_TENANT_NAMES y JAMF_TENANT_IDS antes de activar el flujo de trabajo.

¿Fue útil?