> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# DRM de base et vérifications de licence

> Présente les considérations et les mesures préventives que les titres PC doivent prendre pour éviter le piratage et garantir que le jeu s'exécute avec une licence valide.

Le système de gestion des licences du Microsoft Store effectue une vérification de licence au lancement d'un jeu distribué par le Microsoft Store. Le système d'exploitation ne lance pas le jeu à moins que l'utilisateur ne dispose d'une licence valide pour le produit, y compris la propriété directe, une [licence partagée](/fr-CA/publishing/xstore-commerce/xstore-product-sharing) ou une licence de disque (console XBOX uniquement). Toutefois, sur PC, une fois qu'un utilisateur dispose d'une licence valide, il peut facilement déchiffrer le contenu, l'exécuter en dehors du contexte du Microsoft Store, le partager avec d'autres personnes et contourner le système de gestion des licences du Microsoft Store. Par conséquent, nous vous recommandons d'ajouter une vérification de licence de base à tout jeu PC qui souhaite se protéger contre ce comportement.

## Niveaux de protection de la gestion des droits numériques (DRM)

Sur PC, le système de gestion des licences du Microsoft Store protège uniquement contre les attaques les plus élémentaires. Nous vous recommandons de ne pas vous y fier exclusivement pour le contenu qui nécessite une protection. Voici plusieurs étapes qui peuvent ajouter des couches de protection contre des attaques plus avancées.

1. Vérification de licence lancée par le jeu au démarrage
2. Protection anti-falsification pour la vérification de licence du jeu
3. Vérification de licence côté service à l'aide d'un [jeton de licence](/fr-CA/publishing/xstore-commerce/xstore-license-tokens)

### Vérification de licence de base

Au minimum, nous vous recommandons d'ajouter une vérification de licence de base à tout jeu qui souhaite une protection DRM. L'exemple de code suivant montre une implémentation de base pour effectuer cette vérification, même si vous n'utilisez aucun autre appel d'API lié au Gaming Runtime. Vous pouvez ajouter le code à votre chemin de démarrage et ajouter une interface utilisateur précise qui s'affiche en cas d'échec de la vérification de licence.

```cpp theme={null}
void CALLBACK LicenseCheck(XAsyncBlock *async)
{
    XStoreGameLicense license;
    HRESULT hr = XStoreQueryGameLicenseResult(async, &license);
    if (SUCCEEDED(hr))
    {
        if (!license.isActive)
        {
            // Failed to retrieve a license
            // Consider the title to be unlicensed
        }
        else
        {
            if (license.isTrial)
            {
                // Validated that the user has a trial license
                // Check additional attributes to ensure active trial
                // See "Implementing Trials for your game"
            }
            else
            {
                // Validated that the user has a real license
                // Consider the title to be licensed and continue
            }
        }
    }
    else
    {
        // Failed to retrieve a license
        // Consider the title to be unlicensed
    }

    delete async;
}

void CheckLicense()
{
    auto async = new XAsyncBlock{};
    async->context = this;
    async->queue = m_asyncQueue;
    async->callback = LicenseCheck;

    HRESULT hr = XStoreQueryGameLicenseAsync(
        storeContext,
        async);

    if (FAILED(hr))
    {
        // StoreContext may be invalid
        // If loose deployed or side-loaded package, check that the game configured to be licensed
        // See "Enabling XStore development and testing"

        delete async;
    }
}
```

> [!NOTE]
>
> Une licence accordée au moyen de XBOX Game Pass retourne `isActive = true`, comme une licence achetée. La structure [XStoreGameLicense](/fr-CA/reference/system/xstore/structs/xstoregamelicense) ne comprend aucun champ indiquant comment la licence a été acquise; une vérification de licence côté client ne peut donc pas distinguer l'accès Game Pass d'un achat direct. Pour faire cette distinction, utilisez la requête côté service décrite dans [Détecter l'accès par abonnement XBOX Game Pass à partir de votre service](/fr-CA/publishing/xstore-commerce/xstore-detecting-game-pass).

### Protection anti-falsification non Microsoft

Bien que l'exemple de vérification de licence de base offre une certaine protection, il est courant que les attaquants contournent ce type de protection en modifiant les exécutables du jeu pour contourner cette vérification. Ainsi, la prochaine étape pour sécuriser votre jeu consiste à utiliser un produit anti-falsification non Microsoft pour empêcher ces types d'attaques. Des options sont offertes pour les jeux PC GDK. Collaborez avec votre fournisseur de solution anti-falsification pour obtenir des instructions détaillées sur l'intégration de cette protection à votre jeu.

### Vérification de licence côté service

Les protections anti-falsification protègent bien les titres au lancement, mais un grand nombre d'entre elles finissent par être contournées. Pour aller plus loin, les jeux en ligne peuvent effectuer une vérification de licence côté service et bloquer de nombreuses attaques côté client. Pour plus d'informations, consultez [Vue d'ensemble des jetons de licence](/fr-CA/publishing/xstore-commerce/xstore-license-tokens).

Les grandes lignes sont les suivantes.

1. Le service de jeu demande un jeton de licence au client de jeu et inclut un GUID généré par le service de jeu qui représente cette requête unique.
2. Le client appelle ensuite une API cliente [XStoreQueryLicenseTokenAsync](/fr-CA/reference/system/xstore/xstore_members).
3. L'API appelle le service de gestion des licences et détermine si le jeu doit retourner une licence à cet utilisateur.
4. Si l'API obtient une licence valide, elle retourne un jeton de licence signé qui contient l'identificateur de session fourni par le service.
5. Le client renvoie ensuite le jeton de licence au service de jeu.
6. Le service de jeu valide la signature, ce qui garantit que la licence provient du Microsoft Store et n'a pas été modifiée.
7. Le service de jeu vérifie ensuite que le GUID de session correspond à celui transmis au client à l'étape 1.
8. Le service de jeu peut alors se fier à la validité des informations de licence contenues dans le jeton.

Cette technique fonctionne uniquement en ligne et nécessite que le jeu dispose de son propre service. Elle offre le plus haut niveau de protection actuellement disponible.

## Documentation de référence de l'API

* [XStore (contenu de l'API)](/fr-CA/reference/system/xstore/xstore_members)
  * Fonctions
    * [XStoreQueryLicenseTokenAsync](/fr-CA/reference/system/xstore/xstore_members)

## Références

[Informations sur le commerce propres aux titres compatibles PC](/fr-CA/publishing/xstore-commerce/xstore-pc)

[Modèle de partage de produits pour les jeux](/fr-CA/publishing/xstore-commerce/xstore-product-sharing)

[Vue d'ensemble des jetons de licence](/fr-CA/publishing/xstore-commerce/xstore-license-tokens)

[Vue d'ensemble du commerce](/fr-CA/publishing/xstore-commerce/xstore-commerce-overview)

[Référence de l'API XStore](/fr-CA/reference/system/xstore/xstore_members)


## Related topics

- [XStore sur PC : DRM, jetons de licence et bacs à sable](/fr-CA/publishing/xstore-commerce/xstore-pc.md)
- [XStoreQueryLicenseTokenAsync](/fr-CA/reference/system/xstore/functions/xstorequerylicensetokenasync.md)
- [Modèles de licences ouvertes et restrictives](/fr-CA/publishing/game-publishing/concepts/licensing/open-and-restrictive-licensing.md)
- [Détecter l'accès à un abonnement XBOX Game Pass à partir de votre service](/fr-CA/publishing/xstore-commerce/xstore-detecting-game-pass.md)
- [Licence libcurl](/fr-CA/services/playfab/sdks/cocos2d-x/Licenses/libcurl-License.md)
