Passer au contenu principal

Avant de commencer

Assurez-vous d’avoir :
  • Un tenant Auth0 avec un Domaine personnalisé configuré pour votre application
  • Auth0 CLI installé et authentifié.
  • Une Action post-login
  • Un tenant Auth0 utilisant la stratégie de sessions non persistantes
  • (Facultatif) Configurez les valeurs de temporisation d’inactivité et de temporisation absolue de la session
L’expérience Keep Me Signed In offre aux utilisateurs l’option de rester connectés sur un appareil de confiance.
Image de connexion
  • Si la case Keep Me Signed In est cochée, elle définit une session persistante qui survit aux redémarrages du navigateur.
  • Si la case Keep Me Signed In n’est pas cochée, elle définit une session non persistante qui expire lorsque le navigateur est fermé.
En utilisant des sessions non persistantes (éphémères) avec des Actions, le serveur gère cette logique de façon sécurisée sans exposer de jetons d’actualisation au front-end. En utilisant des Custom Prompts, Auth0 CLI et des sessions éphémères via Actions, vous pouvez implémenter un flux « Keep Me Signed In » moderne et sécurisé, sans jetons d’actualisation, sans solutions de contournement pour les sessions côté client et avec un contrôle complet côté serveur. Cette solution est idéale pour les clients qui privilégient :
  • Une gestion des sessions navigateur conforme au modèle Zero Trust
  • Une persistance de session minimale
  • Des dérogations pour appareils de confiance

1. Configurer une page Universal Login et ajouter une invite personnalisée

Pour recueillir la préférence Rester connecté de l’utilisateur, vous devez personnaliser Universal Login en configurant un modèle de page et en ajoutant une invite personnalisée à l’aide de la CLI Auth0.

Facultatif : activer le modèle de page Universal Login

Cette étape est requise uniquement si votre tenant n’a pas de modèle de page Universal Login configuré.
Utilisez la commande suivante pour créer ou mettre à jour le modèle de page :
auth0 universal-login templates update
L’éditeur de personnalisation ouvre le modèle de page de connexion. Vous pouvez utiliser n’importe quelle structure HTML qui s’adapte à votre marque. Voici un exemple minimal de modèle avec un arrière-plan et un widget encapsulé :
<!DOCTYPE html>
<html lang="{{locale}}">
  <head>
    {%- auth0:head -%}
    <style>
      body {
        background-image: url("https://images.unsplash.com/photo-1643916861364-02e63ce3e52f");
        background-size: cover;
        background-position: center;
      }
      .prompt-wrapper {
        display: flex;
        align-items: center;
        justify-content: center;
        height: 100%;
        background-color: rgba(0, 0, 0, 0.3);
      }
    </style>
    <title>{{ prompt.screen.texts.pageTitle }}</title>
  </head>
  <body class="_widget-auto-layout">
    {% if prompt.name == "login" or prompt.name == "signup" %}
      <div class="prompt-wrapper">
        {%- auth0:widget -%}
      </div>
    {% else %}
      {%- auth0:widget -%}
    {% endif %}
  </body>
</html>
Enregistrez et fermez l’éditeur; la CLI Auth0 vous demande de confirmer :
Do you want to save the template? Yes

 Successfully updated the template for the New Universal Login Experience!

2. Ajouter une case à cocher Rester connecté à l’aide d’Auth0 CLI

Pour ajouter une case à cocher à l’écran d’Universal Login, suivez ces étapes :

Ouvrir l’éditeur de personnalisation

  1. Ouvrez l’éditeur de personnalisation pour l’invite login-id ou login, selon la configuration de votre tenant :
auth0 universal-login customize -p login-id
  1. Sélectionnez standard comme mode de rendu
Rendering Mode: standard
L’éditeur de personnalisation s’ouvre à l’adresse locale suivante :
http://localhost:52649
Si vous ne savez pas si votre tenant utilise login ou login-id, consultez la page Auth0 sur la personnalisation des invites d’inscription et de connexion.

Configurer la case à cocher

Ouvrez l’option Partials dans l’éditeur de personnalisation :
  1. Définissez Prompt sur : login-id (ou login)
  2. Définissez Screen sur : login-id (ou login)
  3. Définissez Partial sur : form-footer-end
Auth0 CLI partials
Ajoutez l’extrait de code HTML suivant :
<div class="ulp-field">
  <input type="checkbox" name="ulp-remember-me" id="remember-me">
  <label for="remember-me">Rester connecté sur cet appareil?</label>
</div>
Cela affiche la case à cocher sous le formulaire de connexion.

Déployez vos modifications

Sélectionnez Deploy Changes en haut à droite pour enregistrer et appliquer la personnalisation.

Point de contrôle

Connectez-vous à l’aide de Universal Login. L’écran de connexion comprend une case à cocher Rester connecté.
Image de connexion

3. Créer une Action Post-Login avec Auth0 CLI

Créez un nouveau fichier appelé set-session-persistence.js à utiliser avec Auth0 CLI et ajoutez le code suivant :
exports.onExecutePostLogin = async (event, api) => {

  // Appliquer la modification uniquement lorsque le paramètre est disponible
  if (event.request.body['ulp-remember-me']) {
    api.session.setCookieMode('persistent');
  } 
};
Utilisez Auth0 CLI pour créer ou mettre à jour votre Action de post-connexion à l’aide du fichier set-session-persistence.js :
auth0 actions create --name kmsi --trigger post-login --code "$(cat set-session-persistence.js)"
Auth0 CLI renvoie l’id de l’Action :
ID             f54c4aae-431f-4290-a7e0-cfc6a3f28386
NAME           kmsi
TYPE           post-login
STATUS         pending
DEPLOYED
LAST DEPLOYED
LAST UPDATED   0 seconds ago
CREATED        il y a 0 seconde
CODE           exports.onExecutePostLogin = async (event, api) => {
                   if (event.request.body['ulp-remember-me']) {
                     api.session.setCookieMode("persistent");
                   } else {
                     api.session.setCookieMode("non-persistent");
                   }
                 };
Déployez votre Action à l’aide de son id :
auth0 actions deploy <id>
Accédez au Auth0 Dashboard > Actions > Triggers > Post-Login pour ajouter la nouvelle Action au flux en cours, puis sélectionnez Apply.
Dashboard Actions Triggers Post Login

Facultatif : définir la durée des sessions pour les appareils de confiance

Vous pouvez utiliser les méthodes api.session.setExpiresAt() ou api.session.setIdleExpiresAt() pour affiner davantage la durée de vie des sessions.
exports.onExecutePostLogin = async (event, api) => {
  if (event.request.body['ulp-remember-me']) {
    api.session.setCookieMode("persistent");

    const now = Date.now();
    api.session.setExpiresAt(now + 7 * 24 * 60 * 60 * 1000); // 7 jours
  } else {
    api.session.setCookieMode("nonpersistent");
  }
};

4. Tester l’implémentation

Pour vérifier le comportement de la session, vous pouvez : Vous connecter à l’aide d’Universal Login et sélectionner la case à cocher Rester connecté.
  • Dans les journaux du tenant, recherchez (types d’événement s ou ssa)
    • cookie: { mode: "non-persistent" }
    • cookie: { mode: "persistent" }
  • Recherchez event.session.cookie.mode dans vos Actions