Configuration de la partie de confiance
Pour utiliser des services web personnalisés, un titre doit d’abord effectuer la configuration de l’authentification unique dans Partner Center. Pour plus d’informations, consultez Configurer une partie de confiance. La partie de confiance est configurée au niveau de l’éditeur et pour tous les sandboxes. La bonne pratique consiste à utiliser, dans la mesure du possible, les mêmes configurations de partie de confiance pour un même service de titre (sur différents titres).Configuration du Webservice Endpoint
En plus de la configuration de la partie de confiance, un point de terminaison de service doit être configuré dans Partner Center pour qu’un service de titre puisse utiliser des jetons XSTS partenaires. Pour plus d’informations, consultez Services web. Les points de terminaison des services web sont configurés au niveau du titre dans la configuration globaleDefaultNsal. DefaultNsal est le seul type de configuration pour les titres actuels. Les titres configurés précédemment peuvent utiliser d’autres types de configuration reflétant d’autres environnements, comme CertificationNsal et RetailNsal. Pour simplifier la configuration, ces types de configuration ne sont pas disponibles pour les nouveaux titres.
Certificats SSL des services web
Tous les points de terminaison des services web doivent utiliser HTTPS et des certificats SSL émis par des autorités de certification (CA) approuvées. Ces certificats ne doivent pas être spécifiés dans la configuration du point de terminaison du service web. Pour le développement et les tests, les titres peuvent utiliser des certificats SSL auto-signés, mais cela n’est pas recommandé si un certificat racine approuvé peut être utilisé. La communication SSL auto-signée n’est pas approuvée par défaut sur la console XBOX. La connexion HTTPS échoue, sauf si le certificat est ajouté à la définition du Webservice Endpoint dans la page Single Sign-on de votre titre dans Partner Center. Pour obtenir la liste des autorités de certification reconnues, consultez Liste des participants - Programme de certificats racines approuvés Microsoft dans la documentation sur la sécurité. Les services peuvent également obtenir un certificat SSL approuvé gratuit auprès d’organisations comme letsencrypt.org.Récupération du jeton et flux de connexion
Tous les points de terminaison des services de titre doivent exiger un jeton XSTS partenaire pour l’authentification et l’autorisation. Sans ces informations, la communication avec le service doit être rejetée. Pour les services web, le jeton XSTS partenaire et l’identification de l’utilisateur (hachage de l’utilisateur) doivent être inclus dans l’en-têteAuthentication de la requête. Pour des informations détaillées sur la structure de ces en-têtes, consultez Jetons de sécurité des services XBOX (jetons XSTS).
Pour les services TCP/UDP sécurisés, le jeton XSTS partenaire et l’identification de l’utilisateur (hachage de l’utilisateur) doivent être inclus dans le message initial d’autorisation ou de négociation (handshake). Sans ces informations, la communication avec le service doit être rejetée. Pour ces connexions, un espace réservé reflétant le domaine du service peut être spécifié comme URI du Webservice Endpoint.
Obtention d’un jeton XSTS partenaire sur le client et envoi de la requête HTTPS
Les données du jeton XSTS partenaire et de l’en-tête de signature sont obtenues par le client de jeu au moyen de l’API XUserGetTokenAndSignatureUtf16Async, selon le flux suivant.- Appelez
XUserGetTokenAndSignatureUtf16Asyncsur l’utilisateur actuel. Incluez dans l’appel d’API l’URL du service et (le cas échéant) les en-têtes personnalisés ou le corps du message. L’API récupère un jeton XSTS et une signature de message à utiliser avec le point de terminaison cible ou le service XBOX. - Récupérez le jeton XSTS et la signature au moyen de
XUserGetTokenAndSignatureUtf16Resultà partir du résultat asynchrone.XUserGetTokenAndSignatureUtf16Resultrenvoie un jeton XSTS chiffré. Les titres doivent traiter le jeton renvoyé comme des données opaques. Les données du jeton ne doivent pas être écrites sur disque ni mises en cache dans l’espace du titre au-delà de l’appel de service suivant. La mise en cache des jetons est gérée pour vous parXUserGetTokenAndSignatureUtf16Async. - Créez une requête HTTPS vers votre point de terminaison cible à l’aide de Microsoft Windows HTTP Services (WinHTTP), du jeton XSTS et des valeurs de signature.
Tous les appels HTTPS doivent être effectués au moyen de l’API WinHTTP, en ajoutant la valeur du jeton XSTS à l’en-tête
Authenticationet la valeur de signature à l’en-têteSignature.
- Au lieu de l’URL d’appel du service, le titre spécifie l’URI d’espace réservé du service.
- Les données d’authentification sont utilisées lors de l’autorisation ou de la négociation initiale de la connexion TCP/UDP.
Traitement des jetons XSTS partenaires sur le serveur
Une fois le jeton XSTS partenaire reçu par un service de titre, celui-ci doit analyser et déchiffrer le jeton, puis en valider l’authenticité. Pour plus de détails sur l’analyse et la validation d’un jeton XSTS, consultez Jetons de sécurité des services XBOX (jetons XSTS). Les développeurs de services sont également vivement encouragés à consulter et à tester l’exemple Game Service et la présentation Xfest 2019 XSTS Auth and Server to Server Made Easy. L’exemple comprend une bibliothèque de services complète avec la gestion des jetons.Authentification et autorisation
Une fois qu’un jeton a été analysé, déchiffré et vérifié, le service peut faire confiance à ses revendications. Pour obtenir la liste de toutes les revendications des jetons XSTS, consultez Revendications des jetons de sécurité des services XBOX. Le service doit d’abord utiliser ces revendications pour l’authentification et l’autorisation au niveau du service. Les informations contenues dans un jeton XSTS partenaire doivent toujours être considérées comme faisant autorité. Les appels de service n’ont pas besoin de dupliquer ces informations dans d’autres parties de la requête. Une attention particulière doit être portée à l’identité de l’utilisateur. Elle doit toujours être validée au moyen d’une revendication du jeton XSTS et ne doit pas être utilisée pour la requête de service sans validation provenant d’autres sources. Pour identifier un utilisateur à des fins d’authentification, un service de titre dispose de deux options.- La revendication /user/pXUID (ptx). Pour tous les scénarios qui ne nécessitent une identité que pour la liaison de comptes, le Partner XUID (pXUID) doit être utilisé. Cette revendication expose un identificateur unique du compte des services XBOX de l’utilisateur auprès de l’éditeur actuel.
- La revendication /user/XID. Pour tous les scénarios dans lesquels un service doit renvoyer l’identité de l’utilisateur ou effectuer des appels de service à service aux services XBOX, le XUID de l’utilisateur est nécessaire. Parmi ces services figurent par exemple les services de classement ou de matchmaking personnalisés, ou les services qui valident des achats au moyen d’appels aux services XBOX.
Les PXUID sont limités au partenaire commercial sélectionné lors de la création de votre partie de confiance dans Partner Center. Si vous utilisez des jetons X pour plusieurs parties de confiance, celles-ci doivent partager le même partenaire commercial pour que les valeurs PXUID correspondent. Pour plus d’informations sur la configuration du partenaire commercial et de la partie de confiance, consultez Configuration des services web dans Partner Center.
