# Authentification de la Skill

Conservez les identifiants de la Skill dans XMEMO_KEY ou via le flux de connexion d'appareil pris en charge, jamais dans les sorties publiques.

- Canonical: https://docs.xmemo.dev/fr/docs/skills/authentication
- Locale: fr-FR
- Content-Locale: fr-FR
- Canonical-Content-Digest: be9eeb314af1163f47f713234e990cb81a2e76a585a0fe87f77a4a45fcecb506
- Edition-Digest: 10f4952706a377d86dda94486608b8f542bdba12e028d4644ffd43f197e18076
- Source-Revision: sha256:bd8b11d078e9e281fe66b1a4a5591f15aaaae0518de04b052b0c28ef43a177c1

## Priorité de résolution des identifiants

L'environnement d'exécution de la Skill autonome résout les identifiants selon une priorité stricte à trois niveaux. Les secrets externes gérés prévalent toujours sur les fichiers locaux, garantissant que les jetons ne soient jamais dupliqués sur le disque lorsqu'un secret d'environnement est fourni.

- 1. XMEMO_KEY : Variable d'environnement ou magasin de secrets géré (Doppler, 1Password, Vault). Préféré ; jamais copié dans des fichiers d'identifiants locaux.
- 2. Meta Muse Secure Vault : Résolution de coffre-fort de substitution dans les environnements Meta Muse pris en charge.
- 3. Fichier d'identifiants local : ~/.xmemo/skill-credentials.json (ou $XMEMO_CREDENTIALS_PATH), lu uniquement comme solution de repli lorsque les identifiants d'environnement ne sont pas définis.
- Exigence de sortie OpenClaw : La sortie OpenClaw est une exigence de transport traitée au sein de la branche XMEMO_KEY (auth-state.mjs). Si une sentinelle OpenClaw est détectée, l'accessibilité du proxy de sortie est imposée ; il s'agit d'une vérification de transport au sein de XMEMO_KEY, et non d'une source d'identifiants distincte.
- Zéro exposition de jetons : Les commandes et diagnostics doctor n'affichent jamais les jetons actifs ni les préfixes de secrets.

```bash
# Preferred: provide credential via environment or secret store
export XMEMO_KEY='<your-xmemo-token>'

# Inspect active credential source and scopes without printing secrets:
node scripts/xmemo-skill.mjs auth status --verify
```

## Connexion de l'appareil et choix éclairé du texte brut

Lorsqu'aucune clé d'environnement gérée n'existe, la configuration interactive utilise l'autorisation d'appareil basée sur le navigateur. L'utilisateur approuve l'accès dans le navigateur, et le navigateur n'affiche jamais la valeur du jeton du porteur.

- Consentement explicite pour le texte brut : La commande login requiert --allow-plaintext afin de confirmer le consentement éclairé pour l'enregistrement du jeton non chiffré sur la machine locale.
- Permissions de fichiers restreintes : ~/.xmemo/skill-credentials.json est créé avec les permissions POSIX 0600 (lecture et écriture par le propriétaire uniquement).
- Importation stdin sécurisée : Importez un jeton existant via l'entrée standard à l'aide de auth add --from-stdin --allow-plaintext, évitant les arguments de ligne de commande et l'enregistrement dans l'historique du shell.
- Points de terminaison d'autorisation d'appareil : POST /v1/auth/device/start (lancer le flux), POST /v1/auth/device/token (interroger et échanger), POST /v1/auth/token/validate (vérifier), POST /v1/auth/token/revoke-self (révoquer).

```bash
# Start interactive device login (requires explicit plaintext flag):
node scripts/xmemo-skill.mjs login --allow-plaintext

# Or pipe an existing token securely from standard input:
printf '%s' "$XMEMO_KEY" | node scripts/xmemo-skill.mjs auth add --from-stdin --allow-plaintext

# Verify active session status:
node scripts/xmemo-skill.mjs auth status --verify
```

## Limites de l'enregistrement temporaire

Pour les environnements sans surveillance ou lorsqu'une personne refuse la connexion formelle, la Skill peut enregistrer un bac à sable de mémoire temporaire. La mémoire temporaire est strictement délimitée et destinée uniquement à une continuité opérationnelle de courte durée.

- Sans surveillance ou refusé uniquement : node scripts/xmemo-skill.mjs register --reason <unattended|declined> --allow-plaintext.
- Plafond de capacité : Limité à un maximum de 100 éléments.
- TTL de rétention : TTL d'inactivité de 14 jours et durée de vie maximale absolue de 30 jours.
- Passage de relais de réclamation en deux phases : Émet une URL de liaison (bind_url) permettant à un opérateur humain de réclamer le compte temporaire et de le lier à des identifiants formels.
- Commandes de gestion des réclamations : auth claim-status inspecte les réclamations en attente, auth claim-confirm accepte le transfert de jeton formel et auth claim-deny refuse la liaison.
- Restrictions du bac à sable : Les comptes temporaires ne peuvent pas capturer d'instantanés de redémarrage (restart-snapshot) ni accéder aux bases Knowledge (recall-context --include_knowledge true).

```bash
# Register temporary sandbox:
node scripts/xmemo-skill.mjs register --reason unattended --allow-plaintext

# Inspect and manage claim binding:
node scripts/xmemo-skill.mjs auth claim-status --allow-plaintext
node scripts/xmemo-skill.mjs auth claim-confirm --allow-plaintext
node scripts/xmemo-skill.mjs auth claim-deny --allow-plaintext
```

## Déconnexion et révocation adaptée au fournisseur

La déconnexion dissocie le fichier d'identifiants local et auto-révoque le jeton de session actif sur le serveur. Les fournisseurs de secrets externes doivent être gérés dans leurs propres environnements.

- Déconnexion de session locale : node scripts/xmemo-skill.mjs logout supprime ~/.xmemo/skill-credentials.json et appelle /v1/auth/token/revoke-self.
- Jeton d'environnement externe : Lorsque XMEMO_KEY fournit l'identifiant actif, la déconnexion laisse ce jeton intact à moins que --revoke-environment-token ne soit explicitement transmis.
- La suppression locale n'est pas une révocation globale : La suppression du répertoire de skill local ou la déconnexion locale ne révoque PAS les jetons stockés dans les coffres-forts de secrets cloud, les exécuteurs CI/CD ou d'autres machines.
- Nettoyage externe : Supprimez XMEMO_KEY dans le shell ou supprimez le secret de votre gestionnaire de secrets pour désactiver définitivement l'accès.

```bash
# Log out and revoke local credential file:
node scripts/xmemo-skill.mjs logout

# Log out and revoke external environment token remotely:
node scripts/xmemo-skill.mjs logout --revoke-environment-token
```

