2026 — OpenClaw, Feishu / Lark et Microsoft Teams : authentification, longues connexions et politique de sortie d'entreprise sur une passerelle Mac physique distant ZoneMac — runbook reproductible (extraits openclaw.json + FAQ 401 / 429)
Les équipes plateforme qui étendent OpenClaw à Feishu (飞书), Lark international et Microsoft Teams heurtent vite l'accès conditionnel, les jetons périmés et les coupures proxy sur les flux longue durée. Ce runbook indique qui casse où, compare passerelle Mac unique et bots fragmentés, propose sept étapes reproductibles sur un Mac physique distant type ZoneMac, un fragment openclaw.json illustratif, des paramètres prêts à citer et une FAQ 401 / 429 alignée sur le balisage structuré.
Introduction
Lorsqu'OpenClaw tourne sur un Mac distant sans écran, Feishu et Lark attendent des vérifications de rappel stables et des identifiants d'application alignés sur le bon tenant, tandis que Teams et Microsoft Graph ajoutent OAuth2, les points de terminaison multi-cloud nationaux et une limitation agressive. Les équipes sécurité publient des listes de sortie et des proxys d'inspection TLS qui ressemblent à des « journées 401 aléatoires » tant que l'on ne corrèle pas expiration JWT, IP SNAT et temporisations d'inactivité proxy.
Ce guide suppose un processus passerelle dédié (ou une petite paire HA) sur un Mac physique de la région où vos utilisateurs discutent réellement, et non un portable qui dort quand le capot se ferme. Les schémas reverse proxy, jetons et chemins CI proches de ceux décrits dans OpenClaw : webhooks, hooks et reverse proxy sur Mac distant (401 / 404) restent la base commune pour éviter les écarts entre préproduction et production.
Pour le fan-out multi-canal, les quotas Graph et les chaînes de dégradation lorsque plusieurs modèles partagent la même passerelle, croisez avec OpenClaw : routage multi-modèles, 429 et fail-over sur passerelle Mac distant. Une version anglaise alignée (hreflang dans <head>) est disponible : runbook EN Feishu / Lark / Teams.
1. Points de friction que les entreprises rencontrent vraiment
- Identité multi-tenant fragmentée : Feishu domestique, Lark global et Entra ID pour Teams ne partagent pas le même annuaire d'applications. Un couple identifiant / secret valide en bac à sable échoue en production avec des 401 opaques tant que les URL d'autorité et les secrets de vérification ne sont pas alignés.
- Listes de sortie et dérive SNAT : les éditeurs épinglent votre IP sortante pour les webhooks ou les politiques de débit. Les pools de Mac distants qui font tourner la sortie sans ticket réseau mis à jour provoquent des échecs de vérification et des reprises d'événements en double.
- Sessions longue durée vs coupe idle proxy : les SDK bot maintiennent WebSockets ou HTTP fragmenté ; les proxys forward ferment souvent les flux silencieux entre cinq et quinze minutes sans keepalives et routage PAC adaptés.
- Audit et moindre privilège : chaque plateforme exige des périmètres différents — famille Graph
ChannelMessage.Read.All, scopes Larkim:message, abonnements Feishu. Trop d'étendue échoue à la revue sécurité ; trop peu génère du bruit 403 / 404 en production.
2. Matrice : passerelle Mac distante unique ou bots fragmentés par région
Tableau pour arbitrer avec l'architecture et la sécurité lorsque plusieurs canaux métiers partagent un même hôte OpenClaw.
| Critère | Une passerelle Mac distante | Bots fragmentés par région |
|---|---|---|
| Stabilité de l'IP de sortie | Un ticket SNAT pour le réseau | Plusieurs listes blanches ; risque de dérive |
| Connexions longue durée | Keepalives plus simples sur hôte filaire | Plus de pièces mobiles ; PAC homogène requis |
| Rayon d'explosion en cas de compromission | Tous les canaux partagent la mémoire du processus | Secrets plus petits par tenant |
| Isolation 429 / quotas | Une boucle bruyante peut affamer les autres | Inscriptions d'application séparées |
| Complexité d'exploitation | Une unité launchd, une queue de journaux | N pipelines de déploiement |
3. Runbook reproductible en sept étapes (Mac physique distant ZoneMac)
- Geler l'inventaire des points de terminaison : énumérez
*.feishu.cn,open.feishu.cn, les hôtes open platform Lark de votre région,login.microsoftonline.com,graph.microsoft.com(ou équivalents cloud national / souverain) et les URL connecteur bot Teams. Déposez un unique change réseau avec commandes de test. - Ancrer le Mac sur secteur et filaire : désactivez la veille pour l'utilisateur passerelle, imposez NTP et enregistrez l'IP de sortie que verra l'éditeur après NAT.
- Lier OpenClaw en boucle locale : terminez le TLS sur nginx / Envoy ou votre tunnel Zero Trust ; proxifiez vers
127.0.0.1:18789(ou le port choisi) pour que les scanners n'atteignent pas l'écoute brute. - Injecter les secrets sans GUI : SecretRef, variables
EnvironmentVariableslaunchd ou scripts adossés au Trousseau — ne jamais committer les secrets d'application à côté deopenclaw.json. - Compléter les défis éditeur sur le chemin production : enregistrez les URL d'événements Feishu / Lark et les points de terminaison messagerie Teams avec la même chaîne DNS, certificat et proxy que les utilisateurs finaux.
- Tests fumée auth et limitation : scriptez une lecture Graph
/meou canal avec la même classe de jeton qu'OpenClaw ; envoyez un événement test Lark / Feishu et contrôlez les en-têtes de signature. - Observer et jeu d'incident : publiez des compteurs 401 / 403 / 429 et les motifs de reconnexion ; après ligne de base, coupez le proxy local et vérifiez la récupération automatique dans la fenêtre SLO documentée.
4. Extraits openclaw.json (illustratifs)
Remplacez les clés fictives par les noms documentés chez l'éditeur ; la structure montre comment cohabiter trois canaux sur un même hôte passerelle.
{
"gateway": {
"bind": "127.0.0.1:18789",
"publicBaseUrl": "https://openclaw-gateway.corp.example",
"logFormat": "jsonl"
},
"channels": {
"feishu": {
"appId": "${FEISHU_APP_ID}",
"appSecret": "${FEISHU_APP_SECRET}",
"encryptKey": "${FEISHU_ENCRYPT_KEY}",
"verificationToken": "${FEISHU_VERIFICATION_TOKEN}"
},
"lark": {
"appId": "${LARK_APP_ID}",
"appSecret": "${LARK_APP_SECRET}",
"encryptKey": "${LARK_ENCRYPT_KEY}"
},
"teams": {
"tenantId": "${ENTRA_TENANT_ID}",
"clientId": "${TEAMS_BOT_APP_ID}",
"clientSecret": "${TEAMS_BOT_SECRET}",
"graphAudience": "https://graph.microsoft.com/"
}
},
"httpClient": {
"proxyUrl": "${CORP_HTTPS_PROXY}",
"respectRetryAfter": true,
"maxConcurrentGraphRequests": 4
}
}
Si la sécurité interdit un HTTP_PROXY global, scindez les proxys par canal lorsque la passerelle le permet, ou routez tout via une VM forward proxy dans la même région que le Mac.
4.1 Façade TLS nginx vers localhost
server {
listen 443 ssl;
server_name openclaw-gateway.corp.example;
ssl_certificate /etc/ssl/internal/fullchain.pem;
ssl_certificate_key /etc/ssl/internal/privkey.pem;
location /feishu/events {
proxy_pass http://127.0.0.1:18789/feishu/events;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 120s;
}
location /teams/api/messages {
proxy_pass http://127.0.0.1:18789/teams/api/messages;
proxy_set_header Host $host;
proxy_read_timeout 120s;
}
}
5. Paramètres prêts à citer dans une note de conception
- Dérive d'horloge JWT : prévoir pour les jetons Entra une tolérance d'environ ±300 secondes entre le Mac et l'heure de référence ; au-delà, Graph renvoie 401 même avec un secret « valide ».
- Comportement 429 : honorer
Retry-Afterlorsque Graph renvoie 429 ; un backoff exponentiel démarre souvent vers 1 à 2 secondes de base avec jitter complet pour les charges en éventail. - Fenêtre idle proxy : de nombreux proxys d'entreprise coupent les flux TLS silencieux entre 300 s et 900 s ; les keepalives applicatifs doivent battre nettement sous le minimum observé sur captures.
6. FAQ : triage HTTP 401 et 429
6.1 Microsoft Graph 401
Contrôlez l'identifiant de tenant dans l'URL de demande de jeton, confirmez que le bot utilise le bon hôte cloud national, relancez le consentement administrateur après changement de périmètre, et vérifiez les exclusions d'accès conditionnel pour le principal de service. Comparez les revendications iat / exp avec sntp -sS time.apple.com sur le Mac.
6.2 Graph ou plate-forme ouverte 429
Réduisez les synchronisations parallèles par canal, mettez en cache les identifiants d'annuaire, évitez le sondage serré lorsque des webhooks existent, et étalez les tâches cron en lecture sur plusieurs minutes. Si plusieurs produits partagent une inscription d'application, isolez le trafic Teams pour qu'une expérience marketing n'affame pas les notifications CI.
6.3 Échecs de vérification Feishu / Lark
Faites tourner clés de chiffrement et jetons de vérification ensemble, assurez-vous que le défi d'écho utilise les octets bruts du corps avant parsing JSON, et vérifiez que l'URL de rappel enregistrée dans la console développeur correspond au SAN TLS du nom public — y compris la discipline du slash final.
7. Pourquoi exécuter cette passerelle sur un profil Mac mini
macOS fournit launchd pour des redémarrages fiables, l'intégration Trousseau pour les secrets bot et une boîte à outils Unix alignée sur la façon dont les équipes Apple déboguent déjà TLS et proxy. Les Mac mini Apple Silicon combinent une veille active de l'ordre de quelques watts avec une marge CPU soutenue pour l'éventail WebSocket et le batching Graph léger, sans la courbe de ventilateur d'un portable en charge.
Gatekeeper, SIP et FileVault réduisent le risque d'une passerelle non surveillée qui concentre Feishu, Lark et Teams dans un seul processus, par rapport à des VM Windows utilitaires partagées sur hyperviseur générique.
Si vous voulez ce gabarit OpenClaw sur du métal stable sans monter vous-même la baie, le Mac mini M4 est en 2026 le point d'entrée « toujours allumé » le plus rationnel en coût : commencez par un Mac mini distant dédié chez ZoneMac pour garder listes de sortie, jetons et lignes de base d'observabilité alignés avec la production dès le premier jour.
Un Mac fixe pour Feishu, Lark et Teams
Louez un nœud macOS physique avec sortie prévisible, profil filaire et place pour OpenClaw ainsi que des sidecars d'observabilité.