> ## 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.

# Demander un User Store ID pour l'authentification de service à service

> Décrit la configuration requise et les étapes pour obtenir un User Store ID pour l'authentification de service à service auprès des API de service du Microsoft Store.

Cet article décrit la configuration et les étapes pour obtenir un User Store ID pour l'authentification de service à service du Microsoft Store.

Un User Store ID authentifie les appels de service aux API du Microsoft Store au nom d'un utilisateur précis. Sur les consoles XBOX, cette identité est liée au compte de l'objet `XUser`. Sur PC, l'identité est liée au compte connecté à l'application Microsoft Store et utilisé pour les achats.

<Note>
  Sur PC, l'identité du compte de l'application Microsoft Store peut être différente de celle du compte connecté à XBOX Live et qui joue au jeu.
</Note>

Pour plus d'informations sur la façon dont le compte de jeu et le compte d'achat peuvent être différents, consultez [Gestion des scénarios de comptes Store non concordants sur PC](/fr-CA/publishing/xstore-commerce/xstore-mismatched-accounts).

Il existe deux types de clés User Store ID.

1. [User Collections ID](#to-create-a-user-collections-id-key-for-the-microsoft-store-collections-service) pour s'authentifier auprès du service Collections du Microsoft Store
2. [User Purchase ID](#to-create-a-user-purchase-id-key-for-the-microsoft-store-purchase-service) pour s'authentifier auprès du service Purchase du Microsoft Store

Les sections suivantes décrivent le processus pour obtenir un User Store ID afin d'appeler les services respectifs :

1. [Configurer une application Microsoft Entra ID](#step-1-configure-a-microsoft-entra-id-application).
2. [Associer votre ID d'application Microsoft Entra à votre application cliente dans Partner Center](#step-2-associate-your-microsoft-entra-application-id-with-your-client-app-in-partner-center).
3. Dans votre service, [créer des jetons d'accès Microsoft Entra ID](#step-3-creating-microsoft-entra-id-access-tokens) qui représentent votre identité d'éditeur.
4. Dans votre jeu, [créer une clé User Store ID](#step-4-create-a-user-store-id-key) qui représente l'identité de l'utilisateur et renvoyer cette clé à votre service.
5. [Authentifier les requêtes aux API du Microsoft Store](#step-5-authenticate-calls-to-the-microsoft-store-apis).
6. [Renouveler une clé User Store ID](/fr-CA/publishing/xstore-commerce/xstore-renew-userstoreid) lorsqu'elle expire.

Ce processus fait intervenir deux composants logiciels :

* **Votre service :** back-end sécurisé qui crée des jetons d'accès Microsoft Entra et appelle les API du Store.
* **Votre jeu :** client qui crée des clés User Store ID pour l'utilisateur connecté et les transmet à votre service.

## La bibliothèque .NET Microsoft.StoreServices et l'exemple

Pour simplifier l'intégration, utilisez Microsoft.StoreServices sur GitHub. La bibliothèque gère les flux d'authentification et de clés, et fournit des wrappers pour les appels aux services du Store. L'exemple comprend des modèles de bout en bout pour les consommables, le rapprochement des remboursements et le renouvellement des clés.

* [Bibliothèque Microsoft.StoreServices](https://github.com/microsoft/Microsoft-Store-Services)
* [Exemple Microsoft.StoreServices](https://github.com/microsoft/Microsoft-Store-Services-Sample)

## Étape 1 : Configurer une application Microsoft Entra ID

Avant de pouvoir utiliser les API du Microsoft Store, créez une application Web Microsoft Entra qui identifie votre service lors des appels aux API. À partir de l'application Web inscrite, obtenez l'ID de locataire, l'ID d'application et la clé secrète afin de générer les jetons d'accès requis lors des étapes suivantes.

<Note>
  Vous pouvez réutiliser l'ID de locataire, l'ID d'application et la clé secrète de l'application Web pour plusieurs jeux et produits de votre éditeur. Vous n'avez pas besoin d'en créer une nouvelle pour chaque jeu.
</Note>

1. Si ce n'est pas déjà fait, suivez les instructions de [Démarrage rapide : Inscrire une application auprès de la plateforme d'identités Microsoft](https://learn.microsoft.com/en-us/azure/active-directory/develop/active-directory-integrating-applications) pour inscrire une application **Web app / API** auprès de Microsoft Entra ID.
   > \[!NOTE] Lorsque vous inscrivez votre application, choisissez **Web app / API** comme type d'application. Ce type vous permet de récupérer une clé (également appelée *secret client*) pour votre application. Pour appeler les API du Microsoft Store, vous devez fournir un secret client lorsque vous demandez un jeton d'accès à Microsoft Entra ID lors d'une étape ultérieure.
2. Dans le [portail de gestion Azure](https://portal.azure.com/), accédez à **Microsoft Entra ID**. Sélectionnez votre annuaire, **App registrations** dans le volet de gauche, puis votre application.
3. Copiez les valeurs **Application (client) ID** et **Directory (tenant) ID** pour une utilisation ultérieure.
4. Créez et copiez un nouveau secret client sous **Certificates & Secrets** dans le volet de gauche.

## Étape 2 : Associer votre ID d'application Microsoft Entra à votre application cliente dans Partner Center

1. Connectez-vous à [Partner Center](https://partner.microsoft.com/dashboard), puis sélectionnez votre jeu.
2. Sélectionnez **Services** > **Product collections and purchases**. Entrez votre ID d'application Microsoft Entra dans l'un des champs **Client ID** disponibles.
3. Sélectionnez **Save**.
4. Republiez le jeu et ses extensions dans le Store.

<Note>
  Les produits d'extension héritent des Client ID enregistrés dans la page **Product collections and purchases** de leur jeu parent. Les produits de type ensemble de jeux (Game Bundle) ont leur propre page **Product collections and purchases** dans laquelle vous devez ajouter les Client ID.
</Note>

## Étape 3 : Créer des jetons d'accès Microsoft Entra ID

Toutes les requêtes d'API nécessitent un jeton du porteur (Bearer), appelé jeton d'accès au service, dans l'en-tête Authorization. L'autre jeton d'accès nécessaire dépend des services ou de l'API que vous appelez.

<Info>
  Créez des jetons d'accès Microsoft Entra ID uniquement dans le contexte de votre service, et non dans votre application. Si vous envoyez votre secret client à votre application, il pourrait être compromis.
</Info>

### Comprendre les différents jetons d'accès et URI d'audience

Chaque jeton d'accès est associé à un URI d'audience différent utilisé pour le créer.

| Type de jeton d'accès | URI d'audience | Utilisation |
| - | - | - |
| Jeton d'accès au service | `https://onestore.microsoft.com/.default` | Jeton du porteur dans l'en-tête Authorization vers les points de terminaison des services du Store |
| Jeton d'accès Collections | `https://onestore.microsoft.com/b2b/keys/create/collections/.default` | Création d'un User Collections ID (`UserCollectionsId`) pour appeler b2bLicensePreview ou publisherQuery |
| Jeton d'accès Purchase | `https://onestore.microsoft.com/b2b/keys/create/purchase/.default` | Création d'un User Purchase ID (`UserPurchaseId`) pour appeler Recurrence ou d'autres services Purchase |

<Info>
  N'envoyez jamais au client des jetons d'accès au service qui utilisent l'audience `https://onestore.microsoft.com/.default`. Stockez-les de manière sécurisée dans votre service.
</Info>

### Créer des jetons d'accès

Pour créer les jetons d'accès, utilisez l'API OAuth 2.0 dans votre service. Suivez les instructions de [Plateforme d'identités Microsoft et flux d'informations d'identification du client OAuth 2.0](https://learn.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-client-creds-grant-flow) pour envoyer une requête HTTP POST au point de terminaison `https://login.microsoftonline.com/<tenant_id>/oauth2/v2.0/token`. L'exemple suivant montre un exemple de requête.

```syntax theme={null}
POST https://login.microsoftonline.com/<tenant_id>/oauth2/v2.0/token HTTP/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded; charset=utf-8

grant_type=client_credentials
&client_id=<your_client_id>
&client_secret=<your_client_secret>
&resource=https://onestore.microsoft.com/.default
```

Pour chaque requête de jeton :

* Définissez `client_id` et `client_secret` sur les valeurs de l'inscription de votre application dans le [portail de gestion Azure](https://portal.azure.com/).
* Définissez `resource` sur l'URI d'audience du type de jeton dont vous avez besoin. Consultez [Comprendre les différents jetons d'accès et URI d'audience](#understanding-the-different-access-tokens-and-audience-uris).

Vous pouvez créer un nouveau jeton d'accès avant ou après l'expiration d'un jeton d'accès existant.

Pour plus d'informations sur la structure d'un jeton d'accès, consultez [Jetons de sécurité](https://learn.microsoft.com/en-us/azure/active-directory/develop/security-tokens).

## Étape 4 : Créer une clé User Store ID

Pour identifier l'utilisateur dans la requête, votre service obtient une clé User Store ID. **User Store ID** est utilisé comme terme général pour désigner un User Collections ID ou un User Purchase ID. La seule différence entre ces clés est le service correspondant auprès duquel elles peuvent s'authentifier.

Vous pouvez générer des clés User Store ID sur le client à l'aide des API du GDK ou sur votre service. Cette section porte sur la création de clés User Store ID sur le client au moyen des API du GDK. Pour plus d'informations sur la façon de générer des clés User Store ID sur votre service, consultez [Demande d'un User Store ID à partir de votre service avec des jetons X ou OAuth 2.0](/fr-CA/publishing/xstore-commerce/xstore-requesting-userstoreid-oauth).

Les clés User Store ID sont des jetons Web JSON (JWT) qui représentent l'utilisateur connecté à l'application Microsoft Store. Pour plus d'informations sur les revendications de cette clé, consultez [Revendications dans une clé User Store ID](#claims-in-a-user-store-id-key).

<Note>
  Chaque clé User Store ID est valide pendant 30 jours. Votre service peut renouveler la clé avant son expiration. Si votre service nécessite un accès continu pour interroger les droits d'utilisation de l'utilisateur, renouvelez vos clés Microsoft Store ID plutôt que d'en créer de nouvelles. Pour plus d'informations, consultez [Renouvellement d'une clé User Store ID](/fr-CA/publishing/xstore-commerce/xstore-renew-userstoreid).
</Note>

### Pour créer une clé User Collections ID pour le service Collections du Microsoft Store

La clé User Collections ID vous permet d'interroger les produits possédés par un utilisateur et de gérer les produits consommables à l'aide des API Collections. Pour plus d'informations sur la gestion des consommables, consultez [Gestion des produits consommables à partir de votre service](/fr-CA/publishing/xstore-commerce/xstore-managing-consumables).

1. Transmettez au jeu un jeton d'accès Collections que vous avez créé à l'[étape 3](#step-3-creating-microsoft-entra-id-access-tokens).
2. Dans le jeu, appelez [XStoreGetUserCollectionsIdAsync](/fr-CA/reference/system/xstore/xstore_members) pour récupérer la clé User Collections ID. Transmettez le jeton d'accès Collections comme paramètre `serviceTicket`. Vous pouvez également transmettre votre identificateur d'utilisateur interne dans `publisherUserId`.
3. Une fois que votre application a créé une clé User Collections ID, renvoyez la clé à votre service.

### Pour créer une clé User Purchase ID pour le service Purchase du Microsoft Store

La clé User Purchase ID vous permet d'interroger les produits possédés par un utilisateur et de gérer les produits consommables à l'aide des API Purchase. Pour plus d'informations sur la gestion des consommables, consultez [Gestion des produits consommables à partir de votre service](/fr-CA/publishing/xstore-commerce/xstore-managing-consumables).

1. Transmettez au jeu un jeton d'accès Purchase que vous avez créé à l'[étape 3](#step-3-creating-microsoft-entra-id-access-tokens).
2. Dans le jeu, appelez [XStoreGetUserPurchaseIdAsync](/fr-CA/reference/system/xstore/xstore_members) pour récupérer la clé User Purchase ID. Transmettez le jeton d'accès Purchase comme paramètre `serviceTicket`. Vous pouvez également transmettre votre identificateur d'utilisateur interne dans `publisherUserId`.
3. Une fois que votre application a créé une clé User Purchase ID, renvoyez la clé à votre service.

## Étape 5 : Authentifier les appels aux API du Microsoft Store

Pour obtenir des instructions, consultez [Authentification avec Microsoft Entra ID et des User Store ID](/fr-CA/publishing/xstore-commerce/xstore-authenticating-service#authenticating-with-microsoft-entra-id-and-user-store-ids).

## Étape 6 : Renouveler une clé User Store ID à son expiration

Pour obtenir des instructions, consultez [Renouvellement d'une clé User Store ID](/fr-CA/publishing/xstore-commerce/xstore-renew-userstoreid).

## Informations supplémentaires

### Diagramme de création d'une clé User Store ID

Le diagramme suivant illustre le processus de création d'une clé User Store ID.

<img src="https://mintcdn.com/microsoft-4404708b/iADzli99B7EWodAv/images/xstore/b2b-1.png?fit=max&auto=format&n=iADzli99B7EWodAv&q=85&s=36a35f930c664b1ccc2b49b2ec430d9d" alt="Diagramme montrant le processus de création d'une clé User Store ID. De gauche à droite, les blocs représentent votre service, Microsoft Entra ID, votre application, le Windows SDK et le Store. Des flèches numérotées montrent le flux de votre service vers Microsoft Entra ID, de votre service vers votre application, de votre application vers le Windows SDK et le Store, puis de votre application vers votre service." width="1021" height="414" data-path="images/xstore/b2b-1.png" />

### Revendications dans une clé User Store ID

Une clé User Store ID est un JWT qui représente l'identité de l'utilisateur dont vous souhaitez consulter les informations de propriété des produits. Lorsque vous la décodez à l'aide de Base64, une clé User Store ID contient les revendications présentées dans le tableau suivant.

| Paramètre | Type | Description |
| - | - | - |
| `iat` | `int` | Heure à laquelle la clé a été émise, exprimée en temps Unix (epoch). Utilisez cette valeur pour déterminer l'âge du jeton. |
| `iss` | `string` | Identifie l'émetteur. A la même valeur que la revendication `aud`. |
| `aud` | `string` | Identifie l'audience. Doit être l'une des valeurs suivantes : `https://collections.mp.microsoft.com/v6.0/keys` ou `https://purchase.mp.microsoft.com/v6.0/keys`. |
| `exp` | `int` | Identifie l'heure d'expiration à laquelle ou après laquelle la clé n'est plus valide pour le traitement, sauf pour le renouvellement des clés. La valeur de cette revendication est exprimée en temps Unix (epoch). |
| `nbf` | `int` | Identifie l'heure à partir de laquelle le jeton est valide pour le traitement. La valeur de cette revendication est exprimée en temps Unix (epoch). |
| `http://schemas.microsoft.com/marketplace/2015/08/claims/key/clientId` | `string` | L'ID client qui identifie le développeur. |
| `http://schemas.microsoft.com/marketplace/2015/08/claims/key/payload` | `string` | Une charge utile opaque (chiffrée et encodée en Base64) qui contient des informations destinées uniquement aux services du Microsoft Store. |
| `http://schemas.microsoft.com/marketplace/2015/08/claims/key/userId` | `string` | Un ID d'utilisateur qui identifie l'utilisateur actuel dans le contexte de vos services. Il s'agit de la même valeur que celle que vous transmettez au paramètre facultatif `publisherUserId` de la [méthode que vous utilisez pour créer la clé User Store ID](#step-4-create-a-user-store-id-key). |
| `http://schemas.microsoft.com/marketplace/2015/08/claims/key/refreshUri` | `string` | L'URI que vous pouvez utiliser pour renouveler la clé. |

L'exemple suivant montre un en-tête User Store ID décodé.

```json theme={null}
{
    "typ":"JWT",
    "alg":"RS256",
    "kid": "36D101AF67A9F61B8017FB96F91EDD4B22F05804",
    "x5t":"agA_pgJ7Twx_Ex2_rEeQ2o5fZ5g"
}
```

Traitez la signature JWT et la revendication `kid` comme des valeurs opaques dans les services clients et de titre. Les API du Store valident la signature.

Exemple d'un ensemble de revendications User Store ID décodé.

```json theme={null}
{
    "http://schemas.microsoft.com/marketplace/2015/08/claims/key/clientId": "1d577369placeholder7393beef1e13d",
    "http://schemas.microsoft.com/marketplace/2015/08/claims/key/payload": "placeholderytCRzCHSqnfczv3f0343wfSydx7hghfu0snWzMqyoAGy5DSJ5rMSsKoQFAccs1iNlwlGrX+/eIwh/VlUhLrncyP8c18mNAzAGK+lTAd2oiMQWRRAZxPwGrJrwiq2fTq5NOVDnQS9Za6/GdRjeiQrv6c0x+WNKxSQ7LV/uH1x+IEhYVtDu53GiXIwekltwaV6EkQGphYy7tbNsW2GqxgcoLLMUVOsQjI+FYBA3MdQpalV/aFN4UrJDkMWJBnmz3vrxBNGEApLWTS4Bd3cMswXsV9m+VhOEfnv+6PrL2jq8OZFoF3FUUpY8Fet2DfFr6xjZs3CBS1095J2yyNFWKBZxAXXNjn+zkvqqiVRjjkjNajhuaNKJk4MGHfk2rZiMy/aosyaEpCyncdisHVSx/S4JwIuxTnfnlY24vS0OXy7mFiZjjB8qL03cLsBXM4utCyXSIggb90GAx0+EFlVoJD7+ZKlm1M90xO/QSMDlrzFyuqcXXDBOnt7rPynPTrOZLVF+ODI5HhWEqArkVnc5MYnrZD06YEwClmTDkHQcxCvU+XUEvTbEk69qR2sfnuXV4cJRRWseUTfYoGyuxkQ2eWAAI1BXGxYECIaAnWF0W6ThweL5ZZDdadW9Ug5U3fZd4WxiDlB/EZ3aTy8kYXTW4Uo0adTkCmdLibw=",
    "http://schemas.microsoft.com/marketplace/2015/08/claims/key/userId": "infusQplaceholder/SZWoPB4FqLEwHXgZFuMJ6TuTY=",
    "http://schemas.microsoft.com/marketplace/2015/08/claims/key/refreshUri": "https://collections.mp.microsoft.com/v6.0/b2b/keys/renew",
    "iat": 1442395542,
    "iss": "https://collections.mp.microsoft.com/v6.0/keys",
    "aud": "https://collections.mp.microsoft.com/v6.0/keys",
    "exp": 1450171541,
    "nbf": 1442391941
}
```

## Documentation de référence des API

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

## Voir aussi

[Gérer les produits à partir de vos services](/fr-CA/publishing/xstore-commerce/xstore-authenticating-service)

[Authentifier votre service auprès des API du Microsoft Store](/fr-CA/publishing/xstore-commerce/xstore-authenticating-service)

[Demande d'un User Store ID à partir de votre service avec des jetons X ou OAuth 2.0](/fr-CA/publishing/xstore-commerce/xstore-requesting-userstoreid-oauth)

[Renouvellement d'une clé User Store ID](/fr-CA/publishing/xstore-commerce/xstore-renew-userstoreid)

[Bibliothèque Microsoft.StoreServices](https://github.com/microsoft/Microsoft-Store-Services)

[Exemple Microsoft.StoreServices](https://github.com/microsoft/Microsoft-Store-Services-Sample)


## Related topics

- [Guide BVT de certification pour PC](/fr/publishing/game-publishing/concepts/certification/certification-pc-bvt-guide.md)
- [Guide des BVT de certification pour PC](/fr-CA/publishing/game-publishing/concepts/certification/certification-pc-bvt-guide.md)
- [Exigences XBOX pour les jeux XBOX](/fr-CA/publishing/certification/xbox-requirements.md)
- [Exigences XBOX testées lors de la certification pour les jeux sur console XBOX](/fr/publishing/certification/console-cert-tested-requirements.md)
- [XBOX Requirements pour les jeux XBOX](/fr/publishing/certification/xbox-requirements.md)
