Skip to content

Données d'Utilisateur

Rédaction en cours

Les données utilisateur sont stockées dans le répertoire de données xmcl.

sh
xmcl data directory
└─ 📜user.json # fichier de configuration utilisateur

Le dossier comprend :

  • ID de l'utilisateur
  • Pseudo
  • Informations sur l'utilisateur (pseudo, skin, cape)
  • Informations sur les services tiers enregistrés.

Format de fichier

json5
{
  "users": {
    // Un compte spécifique
    "a6490773-7e31-4ab4-a70c-e3fa02e7e786": {
      "id": "a6490773-7e31-4ab4-a70c-e3fa02e7e786",
      // Le pseudo, addresse mail si c'est un compte Microsoft
      "username": "xxx@xyz.com",
      "invalidated": false,
      // Indique si c'est un compte Microsoft
      "authService": "microsoft",
      // Délai d'expiration du token d'accès
      "expiredAt": 1678164533914,
      "profiles": {
        // Un rôle d'utilisateur spécifique
        "abf81fe99f0d4948a9097721a8198ac4": {
          "id": "abf81fe99f0d4948a9097721a8198ac4",
          // Nom
          "name": "ABC",
          "textures": {
            // Informations sur le skin
            "SKIN": {
              "url": "url-quelconque",
              "metadata": {
                "model": "steve"
              }
            },
            // Informations sur la cape
            "CAPE": {
              "url": "url-quelconque"
            }
          }
        }
      },
      "selectedProfile": "abf81fe99f0d4948a9097721a8198ac4",
      // URL de l'avatar
      "avatar": "url-quelconque"
    },
  "selectedUser": {
    // ID de l'utilisateur sélectionné
    "id": "a6490773-7e31-4ab4-a70c-e3fa02e7e786"
  },
  // Token du client Minecraft
  "clientToken": "e4c06b2c3ab4405aae6fa6739f310fe5",
  // Services tiers mis en cache, généralement compatibles avec authlibinjector
  "yggdrasilServices": [
    {
      // URL du service tiers
      "url": "https://littleskin.cn/api/yggdrasil",
      "authlibInjector": {
        "meta": {
          "serverName": "LittleSkin",
          "implementationName": "Yggdrasil API for Blessing Skin",
          "implementationVersion": "5.1.1",
          "links": {
            "homepage": "https://littleskin.cn",
            "register": "https://littleskin.cn/auth/register"
          },
          "feature.non_email_login": true
        },
        "signaturePublickey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEArGcNOOFIqLJSqoE3u0hj\ntOEnOcET3wj9Drss1BE6sBqgPo0bMulOULhqjkc/uH/wyosYnzw3xaazJt87jTHh\nJ8BPMxCeQMoyEdRoS3Jnj1G0Kezj4A2b61PJJM1DpvDAcqQBYsrSdpBJ+52MjoGS\nvJoeQO5XUlJVQm21/HmJnqsPhzcA6HgY71RHYE5xnhpWJiPxLKUPtmt6CNYUQQoS\no2v36XWgMmLBZhAbNOPxYX+1ioxKamjhLO29UhwtgY9U6PWEO7/SBfXzyRPTzhPV\n2nHq7KJqd8IIrltslv6i/4FEM81ivS/mm+PN3hYlIYK6z6Ymii1nrQAplsJ67OGq\nYHtWKOvpfTzOollugsRihkAG4OB6hM0Pr45jjC3TIc7eO7kOgIcGUGUQGuuugDEz\nJ1N9FFWnN/H6P9ukFeg5SmGC5+wmUPZZCtNBLr8o8sI5H7QhK7NgwCaGFoYuiAGL\ngz3k/3YwJ40BbwQayQ2gIqenz+XOFIAlajv+/nyfcDvZH9vGNKP9lVcHXUT5YRnS\nZSHo5lwvVrYUrqEAbh/zDz8QMEyiujWvUkPhZs9fh6fimUGxtm8mFIPCtPJVXjeY\nwD3Lvt3aIB1JHdUTJR3eEc4eIaTKMwMPyJRzVn5zKsitaZz3nn/cOA/wZC9oqyEU\nmc9h6ZMRTRUEE4TtaJyg9lMCAwEAAQ==\n-----END PUBLIC KEY-----\n",
        "skinDomains": [
          "skin.prinzeugen.net",
          "littleskin.cn"
        ]
      }
    },
    {
      "url": "https://authserver.ely.by/api/authlib-injector",
      "favicon": "https:authserver.ely.by/favicon.ico",
      "authlibInjector": {
        "meta": {
          "serverName": "Ely.by",
          "implementationName": "Account Ely.by adapter for the authlib-injector library",
          "implementationVersion": "1.0.0",
          "links": {
            "homepage": "https://ely.by",
            "register": "https://account.ely.by/register"
          },
          "feature.non_email_login": false
        },
        "signaturePublickey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxgFJRb0e9fRyVG5+JlCg\nh0hccRIcgO5yxEVkMJajAI12Ev/Pc7lpTt6OtKTEcUNfjYgBnEhIKbdLD0Z+B5Bx\nSg9DQmozgzZcesScpASQb4Kt6P8itowdbgbUm4v+6x1QUKJjjmhHq93m9OIEbxQL\nCq+SrEMZpDrXRgd9DhNPjZv/95ximP8otvh7+bmEl8jwINgfJx0PAeJFYlceQcsh\niYh+LHtaIwzbTTqkDibDm7QiEc+/qGab3mABtVTpqw/refwFoR0M8+xkWF+1/D8k\nH0WFa+rBhdjLyLG+2hdOpKXoH/fMH0tQMPHU78J17JVKWwIWCwEWXp8HiWSbIt3a\ncmBYtyW3tqarFFMMECx2wmJP6FVOvYVThZxq9qc9/f3yeTGz3g7zU1YljHSVRP16\niEbEnHQBKxmrj2cdZgosJej4YppV7f3iZ8o8PF6UY51LSqvaCteXuWeYSJJESGAs\nUoV7ihJfWL8DymHamywB2Cahx7EiDGS3/iBcQUmpk4TTg2FrZPuKGItn1QfIRieO\nknnj9CPKiWdfOtJBr3i1FXLEfExgcJhQ00Y6B08QVvgiCzUF3t+VAG3Ef2YINYyG\nAXcW0TIgMalwwgGzdhQRhItODXptWigy0DNTUAgKQT9PS8N09yPBGxIq64T9A3/z\nFqC/k2bMLWUSVtIlilIItn0CAwEAAQ==\n-----END PUBLIC KEY-----\n",
        "skinDomains": [
          "ely.by",
          ".ely.by"
        ]
      }
    }
  ]
}

Utilisateur hors ligne

Le stockage des données pour les utilisateurs hors ligne/crack est assez spécial, et l'identifiant des utilisateurs hors ligne est défini sur OFFLINE :

json5
{
  "users": {
    "OFFLINE": {
      "id": "OFFLINE",
      "invalidated": false,
      "selectedProfile": "1f4f5288115c3bcba74149a9dad0c89c",
      "profiles": {
        "1f4f5288115c3bcba74149a9dad0c89c": {
          // Le pseudo hors ligne peut être écrit aléatoirement
          "name": "Utilisateur Hors Ligne",
          "id": "1f4f5288115c3bcba74149a9dad0c89c",
          "uploadable": [
            "cape",
            "skin"
          ],
          "textures": {
            "SKIN": {
              "url": "",
              "metadata": {}
            }
          }
        }
      },
      "expiredAt": 8556839292003941,
      "authService": "offline",
      // Le pseudo sera toujours OFFLINE
      "username": "OFFLINE"
    }
  }
}

Stockage d'AccessToken

XMCL utilise keytar pour stocker accessToken dans le gestionnaire de mots de passe du système actuel.

Différents systèmes utiliseront différents services pour le stockage :

Windows

Credential Manager

macOS

Keychain

Linux

libsecret ou Secret Service API

Le launcher le stockera en fonction de service et de account en tant que clés, telles que l'identifiant d'utilisateur ci-dessus.

a6490773-7e31-4ab4-a70c-e3fa02e7e786

La clé dans le stockage sera alors

xmcl/microsoft/a6490773-7e31-4ab4-a70c-e3fa02e7e786

Pour tous les utilisateurs hors ligne, ce sera xmcl/offline/OFFLINE.