PHP : Connexion, déconnexion et restitution des profils utilisateurs avec Auth0-PHP

La trousse SDK Auth0 pour PHP regroupe trois classes principales : Auth0\SDK\Auth0, Auth0\SDK\API\Authentication et Auth0\SDK\API\Management, chacune offrant des interfaces pour différentes fonctionnalités des API d’Auth0. Si vous créez une application Web avec état qui doit garder une trace des sessions des utilisateurs, la classe de base Auth0 est celle avec laquelle vous travaillerez le plus. Elle fournit des méthodes permettant de gérer les tâches courantes d’authentification et de session, telles que la connexion et la déconnexion, la récupération des informations d’identification de l’utilisateur, la vérification de la disponibilité d’une session et la gestion des rappels. Ces tâches sont expliquées ci-dessous.

Pour plus d’informations sur ces capacités et d’autres, veuillez consulter la page de documentation de l’Authentication API.

Prérequis

La documentation ci-dessous part du principe que vous avez suivi les étapes de Auth0-PHP, et que vous avez utilisé le code fourni.

Connexion

Le processus de connexion par défaut dans la trousse SDK pour PHP utilise un octroi de code d’authentification combiné à la page de connexion universelle d’Auth0. En bref, ce processus est le suivant :

  1. Un utilisateur qui demande un accès est redirigé vers la page de connexion universelle.

  2. L’utilisateur s’authentifie en utilisant l’une des nombreuses connexions possibles : réseau social (Google, X, Facebook), base de données (courriel et mot de passe), sans mot de passe (courriel, SMS), ou entreprise (ActiveDirectory, ADFS, Office 365).

  3. L’utilisateur est redirigé ou renvoyé vers l’URL de rappel de votre application avec un code et des valeurs state en cas de succès ou une error et une error_description en cas d’échec.

  4. Si l’authentification a réussi, la valeur state est validée.

  5. Si la valeur state est valide, la valeur code est échangée avec Auth0 contre un jeton d’ID et/ou un jeton d’accès.

  6. L’identité du jeton d’ID peut être utilisée pour créer un compte, pour démarrer une session spécifique à une application ou pour conserver la session de l’utilisateur.

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

  1. Appeler Auth0\SDK\Auth0::login() lorsque les utilisateurs doivent se connecter (par exemple : cliquer sur un lien, visiter le contenu du mur, 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 est connecté et récupérer des informations sur l’utilisateur.

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

// 👆 We're continuing from the "getting started" guide linked in "Prerequisites" above. Append this to the index.php file you created there.

// getExchangeParameters() can be used on your callback URL to verify all the necessary parameters are present for post-authentication code exchange.
if ($auth0->getExchangeParameters()) {
    // If they're present, we should perform the code exchange.
    $auth0->exchange();
}

// Check if the user is logged in already
$session = $auth0->getCredentials();

if ($session === null) {
    // User is not logged in!
    // Redirect to the Universal Login Page for authentication.
    header("Location: " . $auth0->login());
    exit;
}

// 🎉 At this point we have an authenticated user session accessible from $session; your application logic can continue from here!
echo "Authenticated!";

Was this helpful?

/

Enfin, vous devrez ajouter l’URL de votre application au champ « URL de rappel autorisées » de votre application Auth0 sur la page des paramètres. Après cela, le chargement de votre page scriptée devrait :

  1. Vous rediriger immédiatement vers une page de connexion Auth0 pour votre locataire.

  2. Une fois la connexion réussie à l’aide de n’importe quelle connexion, vous rediriger vers votre application.

  3. Afficher une page simple avec la mention « Authentifié! ».

Profil

Maintenant que nous avons authentifié un utilisateur, nous pouvons travailler avec ses données de session conservées pour accomplir des tâches telles que l’affichage des profils utilisateurs.

// 👆 We're continuing from code above. Append this to the index.php file.

printf(
    '<h1>Hi %s!</h1>
    <p><img width="100" src="/docs/%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']) ? '✓' : '✗'
);

Was this helpful?

/

Déconnexion

Outre la connexion, nous voulons également que les utilisateurs puissent se déconnecter. Lorsque les utilisateurs se déconnectent, ils doivent invalider leur session pour l’application. Pour cette trousse SDK, cela signifie détruire leurs données utilisateur et jeton conservées :

// Log out of the application.
header("Location: $auth0->logout());

Was this helpful?

/

Si vous utilisez l’authentification unique (SSO) et que vous souhaitez également mettre fin à leur session Auth0, consultez la section Déconnexion SSO ici. Vous trouverez plus d’informations d’ordre général sur la déconnexion ici.

En savoir plus