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 :
Un utilisateur qui demande un accès est redirigé vers la page de connexion universelle.
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).
L’utilisateur est redirigé ou renvoyé vers l’URL de rappel de votre application avec un
code
et des valeursstate
en cas de succès ou uneerror
et uneerror_description
en cas d’échec.Si l’authentification a réussi, la valeur
state
est validée.Si la valeur
state
est valide, la valeurcode
est échangée avec Auth0 contre un jeton d’ID et/ou un jeton d’accès.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 :
Appeler
Auth0\SDK\Auth0::login()
lorsque les utilisateurs doivent se connecter (par exemple : cliquer sur un lien, visiter le contenu du mur, etc.)Appeler
Auth0\SDK\Auth0::exchange()
lorsque les utilisateurs sont redirigés vers votre URL de rappel.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 :
Vous rediriger immédiatement vers une page de connexion Auth0 pour votre locataire.
Une fois la connexion réussie à l’aide de n’importe quelle connexion, vous rediriger vers votre application.
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.