# Activation de la connexion Microsoft

Cette étape doit être réalisée par le propriétaire légal de BG LANDS. Un client desktop est public : **aucun `client_secret` ne doit être créé, copié dans le binaire ou transmis au launcher**.

1. Créer une App registration Entra appartenant à BG LANDS.
2. Choisir les comptes Microsoft personnels et l’autorité `https://login.microsoftonline.com/consumers`.
3. Configurer la plateforme « Mobile and desktop applications » et autoriser les flux client public.
4. Utiliser un nom d’application de marque propre. La revue interdit notamment `Minecraft`, `Mojang`, `Microsoft`, `Xbox` et `Live` dans le nom soumis.
5. Renseigner un publisher domain, un site, une politique de confidentialité et des conditions d’utilisation appartenant à BG LANDS.
6. Soumettre le Client ID et le Tenant ID au formulaire officiel [AppID Review](https://aka.ms/mce-reviewappid). L’approbation est externe au code et n’est pas automatique.
7. Après approbation, ouvre **Paramètres → Connexion Microsoft** dans le launcher et colle
   l’`Application (client) ID`. Le launcher valide le format, l’enregistre dans
   `%LOCALAPPDATA%\BGLands\Launcher\microsoft.json`, puis active immédiatement la connexion.

L’identifiant public peut aussi être injecté directement dans une release destinée à tous les joueurs :

```powershell
$env:BGLANDS_MICROSOFT_CLIENT_ID="<Application client ID BG LANDS>"
npm run pack:win
```

Le build injecte alors l’ID public dans `launcher.config.json`. Le dépôt conserve volontairement une
valeur vide pour empêcher une diffusion accidentelle avec un AppID emprunté ou non approuvé. Un AppID
intégré reste le mode recommandé pour la release publique finale : les joueurs n’auront rien à configurer.

## Flux utilisé

```text
MSAL Device Code (consumers)
  -> Xbox User Token
  -> XSTS pour rp://api.minecraftservices.com/
  -> bearer Minecraft Services
  -> entitlement Java obligatoire
  -> profil joueur obligatoire
  -> lancement
```

Le mot de passe Microsoft n’entre jamais dans le launcher. Les tokens Xbox/XSTS/Minecraft restent en mémoire ; seul le cache MSAL est persisté, chiffré par le système Windows.

## Test de recette obligatoire

- compte Microsoft possédant Java : connexion, restauration après redémarrage, lancement ;
- compte sans licence : refus explicite ;
- profil Java non initialisé : refus guidé ;
- code expiré/annulé : retour propre à l’écran de connexion ;
- déconnexion : suppression du cache local ;
- aucun token dans `launcher.log`, `minecraft.log`, DevTools ou les messages IPC.
