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

# Gérer la connexion, la déconnexion et les profils utilisateur

> Découvrez comment configurer la connexion, la déconnexion et la récupération des profils utilisateur pour les applications web PHP avec état à l’aide du SDK Auth0-PHP.

Le SDK Auth0-PHP regroupe trois classes principales : `Auth0\SDK\Auth0`, `Auth0\SDK\API\Authentication` et `Auth0\SDK\API\Management`, qui offrent chacune des interfaces pour différentes fonctionnalités des API d’Auth0. Si vous créez une application web avec état qui doit faire le suivi des sessions des utilisateurs, la classe de base `Auth0` est celle que vous utiliserez le plus souvent. Elle fournit des méthodes pour gérer des tâches courantes liées à l’authentification et aux sessions, comme la connexion et la déconnexion, la récupération des informations d’identification des utilisateurs, la vérification de la présence d’une session active et le traitement du rappel. Ces tâches sont expliquées ci-dessous.

Pour en savoir plus sur ces capacités et bien davantage, consultez [Utiliser l’API d’authentification](/docs/fr-ca/libraries/auth0-php/using-the-authentication-api-with-auth0-php).

<div id="prerequisites">
  ## Prérequis
</div>

La documentation ci-dessous suppose que vous avez suivi les étapes décrites dans [Auth0-PHP](/docs/fr-ca/libraries/auth0-php), en vous appuyant sur le code qui y est fourni.

<div id="log-in">
  ## Ouverture de session
</div>

Le processus de login par défaut du SDK PHP utilise un [mécanisme d’octroi Authorization Code](/docs/fr-ca/get-started/authentication-and-authorization-flow/authorization-code-flow/call-your-api-using-the-authorization-code-flow) combiné à la page <Tooltip tip="Universal Login : votre application redirige vers Universal Login, hébergé sur l’Authorization Server d’Auth0, pour vérifier l’identité d’un utilisateur." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=Universal+Login">Universal Login</Tooltip> d’Auth0. En bref, ce processus se déroule comme suit :

1. Un utilisateur qui demande l’accès est redirigé vers la page Universal Login.
2. L’utilisateur s’authentifie au moyen de l’une des [nombreuses connexions possibles](/docs/fr-ca/authenticate/identity-providers) : sociales (Google, X, Facebook), de base de données (courriel et mot de passe), passwordless (courriel, SMS) ou d’entreprise (ActiveDirectory, ADFS, Office 365).
3. L’utilisateur est redirigé vers l’URL de rappel de votre application, ou les données y sont envoyées par POST, avec les valeurs `code` et `state` en cas de réussite, ou `error` et `error_description` dans le cas contraire.
4. Si l’authentification a réussi, la valeur `state` est validée.
5. Si `state` est valide, la valeur `code` est échangée avec Auth0 contre un ID Token et/ou un jeton d’accès.
6. L’identité provenant du ID token peut être utilisée pour créer un compte, démarrer une session propre à l’application ou être enregistrée comme session utilisateur.

Auth0-PHP gère automatiquement la plupart de ces étapes pour vous. Votre application devra :

1. Appeler `Auth0\SDK\Auth0::login()` lorsque les utilisateurs doivent ouvrir une session (par exemple : cliquer sur un lien, consulter du contenu protégé, etc.)
2. Appeler `Auth0\SDK\Auth0::exchange()` lorsque les utilisateurs sont redirigés vers votre URL de rappel.
3. Appeler `Auth0\SDK\Auth0::getCredentials()` lorsque vous devez vérifier si un utilisateur a ouvert une session et récupérer ses renseignements.

Une mise en œuvre simple de ces étapes ressemble à ceci :

```php lines theme={null}
// 👆 Nous continuons à partir du guide « Premiers pas » lié dans « Prérequis » ci-dessus. Ajoutez ce qui suit au fichier index.php que vous avez créé à cette étape.

// getExchangeParameters() peut être utilisé sur votre URL de rappel pour vérifier que tous les paramètres nécessaires sont présents pour l'échange de code post-authentification.
if ($auth0->getExchangeParameters()) {
    // S'ils sont présents, nous devons effectuer l'échange de code.
    $auth0->exchange();
}

// Vérifier si l'utilisateur est déjà connecté
$session = $auth0->getCredentials();

if ($session === null || $session->accessTokenExpired) {
    // L'utilisateur n'est pas connecté ou son jeton d’accès a expiré.
    // Rediriger vers la page Universal Login pour l'authentification.
    header("Location: " . $auth0->login());
    exit;
}

// 🎉 À ce stade, nous disposons d'une session utilisateur authentifiée accessible via $session ; la logique de votre application peut prendre le relais à partir d'ici !
echo "Authenticated!";
```

Enfin, vous devrez ajouter l’URL de votre application au champ "Allowed Callback URLs" de votre application Auth0 sur la page Settings. Après cela, le chargement de votre page avec script devrait :

1. Vous rediriger immédiatement vers une page de connexion Auth0 pour votre tenant.
2. Après une connexion réussie avec n’importe quelle connexion, vous rediriger vers votre application.
3. Afficher une page simple indiquant 'Authentifié !'.

<div id="profile">
  ## Profil
</div>

Maintenant que nous avons authentifié un utilisateur, nous pouvons utiliser les données de sa session enregistrées pour faire des choses comme afficher des profils utilisateur.

```php lines theme={null}
// 👆 Nous continuons à partir du code ci-dessus. Ajoutez ceci au fichier index.php.

printf(
    '<h1>Hi %s!</h1>
    <p><img width="100" src="/%s"></p>
    <p><strong>Last update:</strong> %s</p>
    <p><strong>Contact:</strong> %s %s</p>
    <p><a href="/docs/logout.php">Logout</a></p>',
    isset($session->user['nickname']) ? strip_tags($session->user['nickname']) : '[unknown]',
    isset($session->user['picture']) ? filter_var($session->user['picture'], FILTER_SANITIZE_URL) : 'https://gravatar.com/avatar/',
    isset($session->user['updated_at']) ? date('j/m/Y', strtotime($session->user['updated_at'])) : '[unknown]',
    isset($session->user['email']) ? filter_var($session->user['email'], FILTER_SANITIZE_EMAIL) : '[unknown]',
    ! empty($session->user['email_verified']) ? '✓' : '✗'
);
```

<div id="logout">
  ## Déconnexion
</div>

En plus de se connecter, nous voulons aussi que les utilisateurs puissent se déconnecter. Lorsqu’ils se déconnectent, ils doivent invalider leur session dans l’application. Pour ce SDK, cela signifie supprimer leurs données utilisateur persistantes ainsi que leurs données de jeton :

```php lines theme={null}
// Se déconnecter de l'application.
header("Location: " . $auth0->logout());
```

Si vous utilisez l’<Tooltip tip="Authentification unique (SSO) : service qui, lorsqu’un utilisateur se connecte à une application, le connecte automatiquement aux autres applications." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=Single+Sign-on">authentification unique</Tooltip> (SSO) et souhaitez aussi mettre fin à la session Auth0 de l’utilisateur, consultez [la section sur la déconnexion de l’authentification unique](/docs/fr-ca/libraries/auth0-php/using-the-authentication-api-with-auth0-php). Pour en savoir plus sur la déconnexion, consultez [Comment fonctionne la déconnexion sur Auth0](/docs/fr-ca/authenticate/login/logout).

<div id="learn-more">
  ## En savoir plus
</div>

* [Commencer avec Auth0-PHP](/docs/fr-ca/libraries/auth0-php)
* [Utiliser l’Authentication API](/docs/fr-ca/libraries/auth0-php/using-the-authentication-api-with-auth0-php)
* [Utiliser la Management API](/docs/fr-ca/libraries/auth0-php/using-the-management-api-with-auth0-php)
* [Valider les JWT (JSON Web Tokens)](/docs/fr-ca/libraries/auth0-php/validating-jwts-with-auth0-php)
* [Résoudre les problèmes liés à votre intégration Auth0-PHP](/docs/fr-ca/libraries/auth0-php/troubleshoot-auth0-php-library)
