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

# Authentification par connexion anonyme côté serveur

> Configurez la connexion anonyme PlayFab avec la création de joueurs côté serveur à l'aide de l'authentification CustomID, afin de protéger les titres HTML5 et JavaScript contre les inscriptions non autorisées.

# Configuration de l'authentification PlayFab à l'aide de la connexion anonyme

Ce guide vous montre comment implémenter l'authentification PlayFab à l'aide des API de connexion anonyme avec une protection côté serveur, en se concentrant uniquement sur l'authentification CustomID avec HTML5/JavaScript.

## Aperçu

> [!NOTE]
>
> À compter du 30 juin 2025, la création de joueurs au moyen des API anonymes sera désactivée pour tous les titres nouvellement créés.

Pour améliorer la sécurité de la connexion anonyme, PlayFab a implémenté une fonctionnalité de sécurité essentielle qui sépare les capacités de création de joueurs entre les API côté client et les API côté serveur.

1. **Création de joueurs côté client désactivée** :
   * Pour les titres nouvellement créés, toutes les API de connexion anonyme côté client (`LoginWithCustomID`, `LoginWithAndroidDeviceID`, `LoginWithIOSDeviceID`, `LoginWithNintendoSwitchDeviceId`) ne créent plus automatiquement de nouveaux comptes de joueurs. Les titres créés avant le 30 juin 2025 peuvent désactiver la connexion anonyme au moyen de la [configuration de Game Manager](/fr-CA/services/playfab/identity/player-identity/platform-specific-authentication/anonymous-login#configuring-player-creation-settings).
   * La désactivation de la création de joueurs côté client empêche la création de comptes non autorisés directement à partir de clients non autorisés.
   * Seuls les joueurs existants peuvent se connecter au moyen des API côté client.
2. **Création de joueurs côté serveur activée** :
   * La création de comptes de joueurs est maintenant gérée au moyen des API côté serveur (`LoginWithCustomID`, `LoginWithAndroidDeviceID`, `LoginWithIOSDeviceID`, `LoginWithNintendoDeviceId`).
   * Cela garantit que toute la création de comptes a lieu dans un environnement sécurisé et contrôlé.

## Prérequis

* Un identificateur unique pour le joueur (CustomID)
* Un titre [PlayFab](https://developer.playfab.com/) enregistré
* La clé secrète de votre titre PlayFab
* Une bonne connaissance des [notions de base et pratiques exemplaires de connexion](/fr-CA/services/playfab/identity/player-identity/login/login-basics-best-practices)
* Un serveur doté d'un nom de domaine valide pour servir des fichiers HTML statiques

> [!NOTE]
>
> Si vous avez besoin d'aide pour configurer un serveur, consultez le tutoriel [Exécution d'un serveur HTTP à des fins de test](/fr-CA/services/playfab/identity/player-identity/platform-specific-authentication/running-an-http-server-for-testing). Tout au long de ce guide, nous supposerons que votre domaine est `http://playfab.example`.

## Flux d'authentification

1. **Création de comptes côté serveur** :
   * Utilisez `Server/LoginWithCustomID` avec l'API serveur pour créer de nouveaux joueurs
   * Nécessite une clé secrète de titre
   * Référence : [API serveur - Login With Custom ID](xref:titleid.playfabapi.com.server.authentication.loginwithcustomid)
2. **Connexion côté client** :
   * Utilisez `Client/LoginWithCustomID` avec l'API client pour connecter les joueurs existants
   * Référence : [API client - Login With Custom ID](xref:titleid.playfabapi.com.client.authentication.loginwithcustomid)

## Étapes d'implémentation

### 1. Configurer votre environnement de développement

1. Téléchargez le SDK JavaScript à partir de la [documentation du SDK JavaScript](/fr-CA/services/playfab/sdks/javascript/)
2. Installez les paquets Node.js requis :

```bash theme={null}
npm install playfab-sdk
```

### 2. Implémentation côté serveur (Node.js)

> [!NOTE]
>
> Gardez la clé secrète de votre titre en sécurité et ne l'exposez jamais dans le code côté client. La clé secrète ne doit être utilisée que dans des environnements serveur sécurisés.

```javascript theme={null}
const { create } = require('domain');
const http = require('http');
const PlayFab = require('playfab-sdk');
const PlayFabServer = require('playfab-sdk/Scripts/PlayFab/PlayFabServer');

// Initialize PlayFab settings
PlayFab.settings.titleId = "YOUR_TITLE_ID"; // Replace with your actual PlayFab Title ID
PlayFab.settings.developerSecretKey = "YOUR_SECRET_KEY"; // Replace with your actual secret key

// Callback function for PlayFab API responses
function onPlayFabResponse(error, result) {
    if (error) {
        console.error("PlayFab Error:", error);
        return;
    }
    console.log("PlayFab Success:", result);
}

// Function to create user with custom ID
function createUserWithCustomId(customId, callback) {
    PlayFab.PlayFabServer.LoginWithCustomID({
        CreateAccount: true,
        CustomId: customId,
    }, (error, result) => {
        if (error) {
            console.error("PlayFab Error:", error);
            callback(error);
            return;
        }
        console.log("PlayFab Success:", result);
        callback(null, result.data);
    });
}

const customId = "YOUR_CUSTOM_ID"; // Replace with your actual custom ID
const server = http.createServer((req, res) => {
    res.writeHead(200, {'Content-Type': 'application/json'});
    createUserWithCustomId(customId, (error, result) => {
        if (error) {
            res.end(JSON.stringify({ error: error }));
            return;
        }
        res.end(JSON.stringify({ success: result }));
    });
});

const port = 3000;
server.listen(port, () => {
  console.log(`Server running at http://localhost:${port}/`);
});
```

### 3. Implémentation côté client (HTML)

```html theme={null}
<!DOCTYPE html>
<html>
<head>
    <script src="PlayFabSdk/src/PlayFab/PlayFabClientApi.js"></script>
</head>
<body>
    <p>Server LoginWithCustomId Auth Example</p>
    <button onclick="loginWithCustomID()">Log In with CustomId</button>
    <script>
        function loginWithCustomID() {
            var customId = "YOUR_CUSTOM_ID";
            PlayFabClientSDK.LoginWithCustomID({
                CustomId: customId,
                TitleId: YOUR_TITLE_ID,
            }, onPlayFabResponse);
        }
       

        function onPlayFabResponse(response, error) {
            if (response)
                logLine("Response: " + JSON.stringify(response));
            if (error)
                logLine("Error: " + JSON.stringify(error));
        }

        function logLine(message) {
            var textnode = document.createTextNode(message);
            document.body.appendChild(textnode);
            var br = document.createElement("br");
            document.body.appendChild(br);
        }
    </script>
</body>
</html>
```

## Configuration des paramètres de création de joueurs

### Pour les titres existants

1. Accédez au portail des développeurs PlayFab et sélectionnez votre titre
2. Allez dans **Settings**.
3. Sélectionnez l'onglet **API Features**.
4. Cochez la case pour empêcher la création de nouveaux comptes de joueurs au moyen des API de connexion anonyme

![Désactivation de la création de joueurs avec Client/LoginWithCustomId](https://mintcdn.com/microsoft-4404708b/mLCHf0iQv3VidfBe/images/playfab/identity/player-identity/platform-specific-authentication/tutorials/anonymous-html5/existing_title.png?fit=max\&auto=format\&n=mLCHf0iQv3VidfBe\&q=85\&s=93fa9bb45336593fc9a984f67a77b81c)

### Pour les nouveaux titres

> [!WARNING]
>
> L'activation de la création automatique de joueurs pour les API de connexion anonyme peut compromettre la sécurité. N'activez cette fonctionnalité que temporairement pendant le développement ou les tests. Désactivez-la toujours avant de passer en production.

La création de joueurs au moyen des API anonymes est désactivée par défaut pour les nouveaux titres. Pour l'activer à des fins de test, procédez comme suit :

1. Accédez au portail des développeurs PlayFab et sélectionnez votre titre
2. Allez dans **Settings**.
3. Sélectionnez l'onglet **API Features**.
4. Décochez la case pour permettre la création de nouveaux comptes de joueurs au moyen des API de connexion anonyme

![Activation de la création de joueurs avec Client/LoginWithCustomId](https://mintcdn.com/microsoft-4404708b/mLCHf0iQv3VidfBe/images/playfab/identity/player-identity/platform-specific-authentication/tutorials/anonymous-html5/new_title.png?fit=max\&auto=format\&n=mLCHf0iQv3VidfBe\&q=85\&s=3f059a42ec2a12c62b5a1124c1c92333)

## Tests et exemples de réponses

### Exemple de réponse du serveur

Lorsque vous créez un utilisateur avec succès au moyen de l'API serveur, vous recevez une réponse semblable à celle-ci :

```json theme={null}
{
    "code": 200,
    "status": "OK",
    "data": {
        "PlayFabId": "PLAYFAB_ID",
        "SessionTicket": "SESSION_TICKET",
        "NewlyCreated": true
    }
}
```

### Exemple de réponse du client

Lorsque vous tentez de créer un nouveau compte à partir de l'API client (ce qui est maintenant désactivé), vous recevez une erreur :

```json theme={null}
{
    "code": 400,
    "status": "BadRequest",
    "error": "PlayerCreationDisabled"
}
```

Lorsque vous connectez avec succès un utilisateur existant au moyen de l'API client :

```json theme={null}
{
    "code": 200,
    "status": "OK",
    "data": {
        "PlayFabId": "PLAYFAB_ID",
        "SessionTicket": "SESSION_TICKET",
        "NewlyCreated": false
    }
}
```

## Lectures complémentaires

* [Aperçu de l'authentification PlayFab](/fr-CA/services/playfab/identity/player-identity/authentication)
* [Notions de base et pratiques exemplaires de connexion](/fr-CA/services/playfab/identity/player-identity/login/login-basics-best-practices)
* [Exécution d'un serveur HTTP à des fins de test](/fr-CA/services/playfab/identity/player-identity/platform-specific-authentication/running-an-http-server-for-testing)


## Related topics

- [Authentification](/fr-CA/services/playfab/identity/player-identity/authentication/index.md)
- [Notions de base et pratiques exemplaires de connexion](/fr-CA/services/playfab/identity/player-identity/login/login-basics-best-practices.md)
- [Services facultatifs](/fr-CA/build/gdk-and-engines/optional-services.md)
- [PFAccountManagementClientAddUsernamePasswordAsync](/fr-CA/services/playfab/api-references/c/pfaccountmanagement/functions/pfaccountmanagementclientaddusernamepasswordasync.md)
- [Gestion côté serveur des privilèges utilisateur des services Xbox](/fr-CA/services/xbox-services/fundamentals/identity/privileges/concepts/live-user-privileges-server.md)
