80. pepsi-helper-token-refresh

Rafraîchir les jetons d’accès OAuth pour l’étape de relais smarthost.

80.1. Rôle

Un MTA smarthost configuré avec AUTH = oauth (voir pepsi-stage-relay-to-smarthost) s’authentifie avec un jeton porteur SASL que l’étape de relais lit dans un TOKEN_FILE, frais à chaque remise. Ces jetons d’accès sont à courte durée de vie, le fichier doit donc être rafraîchi hors bande.

pepsi-helper-token-refresh fait cela : pour chaque [pepsi-stage-relay-to-smarthost-mta-<name>] avec AUTH = oauth, il associe les TOKEN_FILE/USERNAME du MTA à une section secrète [pepsi-helper-token-refresh-<name>] (les identifiants client OAuth, conservés dans un fichier @inline-secret@ séparé lisible par ce seul service), demande un jeton frais au TOKEN_ENDPOINT du fournisseur et l’écrit atomiquement dans le fichier de jeton. GRANT sélectionne le type d’octroi de la RFC 6749 : refresh_token (la valeur par défaut, par exemple Google ; il exige également REFRESH_TOKEN) ou client_credentials (par exemple Microsoft 365 en mode application seule ; il exige SCOPE) ; CLIENT_ID et CLIENT_SECRET sont obligatoires dans les deux cas. Un jeton de rafraîchissement renouvelé est conservé dans le répertoire privé [pepsi-helper-token-refresh] STATE_DIR (par défaut /var/pepsi/token-refresh). Une cible dont la section secrète n’a pas de TOKEN_ENDPOINT est ignorée, en supposant que son jeton est fourni hors bande.

Ce n’est pas une étape et il ne fait délibérément pas partie de pepsi.target — c’est une implémentation du contrat de rafraîchissement externe décrit dans Étendre le pipeline, et un site peut lui substituer le sien. Référence : pepsi-helper-token-refresh(1).

80.2. Sécurité

Le service s’exécute sous le compte dédié pepsi-helper-token-refresh, seul lecteur des secrets client. Il écrit les fichiers de jeton dans un répertoire SGID sur le groupe pepsi-token (par défaut /var/pepsi/tokens), mode 0640 ; le binaire de l’étape de relais est installé SGID pepsi-token afin que le worker pepsi du dispatcher puisse les lire. Voir Étendre le pipeline pour le contrat complet.

80.3. Modes

  • service (la valeur par défaut) — un processus de longue durée qui rafraîchit chaque jeton de façon proactive, avec REFRESH_MARGIN d’avance sur l’expiration (5 min par défaut), et réessaie une cible défaillante avec backoff tout en laissant son jeton précédent en place. S’exécute jusqu’à SIGINT/SIGTERM.

  • –once — rafraîchir chaque cible une seule fois et sortir (une exécution manuelle, un timer systemd ou cron) ; code de sortie non nul si une cible a échoué.

80.4. Voir aussi

pepsi-stage-relay-to-smarthost, pepsi-setup, pepsi-helper-token-refresh(1), pepsi.conf(5).