Démarrage rapide : Utiliser Azure Cache pour Redis dans Node.js

Dans ce guide de démarrage rapide, vous allez incorporer le cache Azure pour Redis dans une application Node.js pour avoir accès à un cache sécurisé et dédié accessible à partir de n’importe quelle application dans Azure.

Prérequis

Créer une instance de cache

  1. Pour créer un cache, connectez-vous au portail Azure, puis sélectionnez Créer une ressource.

    Créer une ressource est mis en évidence dans le volet de navigation de gauche.

  2. Dans la page Démarrer, tapez Azure Cache pour Redis dans la zone de recherche. Sélectionnez ensuite Create (Créer).

    Capture d’écran de la Place de marché Azure avec Azure Cache pour Redis dans la zone de recherche et Créer est mis en évidence avec un encadré rouge.

  3. Dans la page Nouveau Cache Redis, configurez les paramètres de votre cache.

    Setting Choisir une valeur Description
    Abonnement Dans la liste déroulante, sélectionnez votre abonnement. Abonnement sous lequel créer cette nouvelle instance d’Azure Cache pour Redis.
    Groupe de ressources Dans la liste déroulante, sélectionnez un groupe de ressources ou choisissez Créer nouveau, puis entrez un nouveau nom de groupe de ressources. Nom du groupe de ressources dans lequel créer votre cache et d’autres ressources. En plaçant toutes les ressources de votre application dans un seul groupe de ressources, vous pouvez facilement les gérer ou les supprimer ensemble.
    Nom DNS Entrez un nom unique. Le nom du cache doit être une chaîne de 1 à 63 caractères ne contenant que des chiffres, des lettres ou des traits d’union. Le nom doit commencer et se terminer par un chiffre ou une lettre, et ne peut pas contenir de traits d’union consécutifs. Le nom d’hôte de votre instance de cache est <nom DNS>.redis.cache.windows.net.
    Lieu Dans la liste déroulante, sélectionnez un emplacement. Choisissez une Région proche d’autres services qui utilisent votre cache.
    Référence SKU du cache Déroulez la liste et sélectionnez une référence SKU. La référence SKU détermine la taille, le niveau de performance et les fonctionnalités disponibles pour le cache. Pour plus d’informations, consultez Présentation du cache Azure pour Redis.
    Taille du cache Déroulez la liste et sélectionnez une taille pour votre cache Pour plus d’informations, consultez Présentation du cache Azure pour Redis.
  4. Sélectionnez l’onglet Réseau ou sélectionnez le bouton Réseau au bas de la page.

  5. Sous l’onglet Réseau, sélectionnez votre méthode de connectivité.

  6. Sélectionnez l’onglet Suivant : Avancé ou sélectionnez le bouton Suivant : Avancé en bas de la page pour afficher l’onglet Avancé.

    Capture d’écran montrant l’onglet Avancé dans le volet de travail et l’option pouvant être sélectionnée.

    • Par défaut, pour un nouveau cache Basic, Standard ou Premium, l’authentification Microsoft Entra est activée et l’authentification par clés d’accès est désactivée.
    • Pour les caches Basic ou Standard, vous pouvez choisir la sélection d'un port non TLS.
    • Pour les caches Standard et Premium, vous pouvez choisir d'activer les zones de disponibilité. Vous ne pouvez pas désactiver les zones de disponibilité une fois le cache créé.
    • Pour un cache Premium, configurez les paramètres afin d’utiliser un port non-TLS, le clustering, l’identité managée et la persistance des données.

    Important

    Pour une sécurité optimale, Microsoft recommande d’utiliser dans la mesure du possible Microsoft Entra ID avec des identités managées pour autoriser les requêtes sur votre cache. L’autorisation avec Microsoft Entra ID et les identités managées offre davantage de sécurité et de facilité d’utilisation que l’autorisation de clé partagée. Pour plus d’informations sur l’utilisation d’identités managées avec vos caches, consultez Utiliser Microsoft Entra ID pour l’authentification auprès du cache.

  7. Sélectionnez l’onglet Suivant : Avancé ou sélectionnez le bouton Suivant : Étiquettes au bas de la page.

  8. Si vous le voulez, sous l’onglet Étiquettes, entrez le nom et la valeur si vous souhaitez catégoriser la ressource.

  9. Sélectionnez Revoir + créer. Lors de la vérification + création, Azure valide votre configuration.

  10. Une fois que le message vert Validation réussie s’affiche, sélectionnez Créer.

La création d’un cache prend un certain temps. Vous pouvez surveiller la progression dans la page Vue d’ensemble du Azure Cache pour Redis. Lorsque État indique En cours d’exécution, le cache est prêt pour utilisation.

Installer la bibliothèque de client node-redis

La bibliothèque node-redis est le client Node.js primaire pour Redis. Vous pouvez installer le client avec npm en utilisant la commande suivante :

npm install redis

Créer une application Node.js pour accéder à un cache

Créez une applicationNode.js qui utilise Microsoft Entra ID ou des clés d’accès pour se connecter à un Azure Cache pour Redis. Nous vous recommandons Microsoft Entra ID.

Activer l’authentification Microsoft Entra ID sur votre cache

Si vous avez un cache, vérifiez que l’authentification Microsoft Entra a été activée. Si ce n’est pas le cas, activez-la. Nous vous recommandons d’utiliser Microsoft Entra ID pour vos applications.

  1. Dans le portail Azure, sélectionnez l’instance Azure Cache pour Redis pour laquelle vous voulez utiliser l’authentification basée sur des jetons Microsoft Entra.

  2. Dans le menu Ressource, sélectionnez Authentification.

  3. Dans le volet actif, vérifiez si Activer l’authentification Microsoft Entra est coché. Si c’est le cas, vous pouvez continuer.

  4. Sélectionnez Activer l’authentification Microsoft Entra, puis entrez le nom d’un utilisateur valide. L’utilisateur que vous spécifiez est automatiquement associé à la stratégie d’accès Propriétaire des données par défaut lorsque vous sélectionnez Enregistrer. Vous pouvez également entrer une identité managée ou un principal de service pour vous connecter à votre instance de cache.

    Capture d’écran illustrant l’authentification sélectionnée dans le menu Ressources et l’activation de l’authentification Microsoft Entra cochée.

  5. Une boîte de dialogue contextuelle s’affiche pour vous demander si vous souhaitez mettre à jour votre configuration, et vous informer que l’opération prend plusieurs minutes. Sélectionnez Oui.

    Important

    Une fois l’opération d’activation terminée, les nœuds de votre instance de cache redémarrent pour charger la nouvelle configuration. Nous vous recommandons d’effectuer cette opération pendant votre fenêtre de maintenance ou en dehors de vos heures de pointe. L’opération peut prendre jusqu’à 30 minutes.

Pour plus d’informations sur l’utilisation de Microsoft Entra ID avec l’interface de ligne de commande Azure (Azure CLI) consultez les pages de référence pour l’identité.

Installez la bibliothèque de client JavaScript Azure Identity

La bibliothèque d’authentification Microsoft (Microsoft Authentication Library/MSAL) vous permet d’acquérir des jetons de sécurité depuis l’identité Microsoft pour authentifier les utilisateurs. Il existe une bibliothèque de client d’identité Azure JavaScript qui utilise la MSAL pour fournir une prise en charge de l’authentification par jeton. Installez cette bibliothèque en utilisant npm :

npm install @azure/identity

Créer une application Node.js en utilisant Microsoft Entra ID

  1. Ajoutez les variables d’environnement pour votre Nom d’hôte et votre ID de principal de service, qui est l’ID d’objet de votre principal de service ou de votre utilisateur Microsoft Entra ID. Dans le Portail Azure, il s’agit du Nom d’utilisateur.

    set AZURE_CACHE_FOR_REDIS_HOST_NAME=contosoCache
    set REDIS_SERVICE_PRINCIPAL_ID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    
  2. Créez un fichier de script nommé redistest.js.

  3. Ajoutez l’exemple JavaScript suivant au fichier. Ce code vous montre comment se connecter à une instance de cache Azure pour Redis à l’aide du nom d’hôte de cache et des variables d’environnement de la clé. Le code stocke et récupère également une valeur de chaîne dans le cache. Les commandes PING et CLIENT LIST sont également exécutées. Pour plus d’exemples d’utilisation de Redis avec le client node-redis, consultez https://redis.js.org/.

    const { createClient } = require("redis");
    const { DefaultAzureCredential } = require("@azure/identity");
    
    async function main() {
      // Construct a Token Credential from Identity library, e.g. ClientSecretCredential / ClientCertificateCredential / ManagedIdentityCredential, etc.
      const credential = new DefaultAzureCredential();
      const redisScope = "https://redis.azure.com/.default";
    
      // Fetch a Microsoft Entra token to be used for authentication. This token will be used as the password.
      let accessToken = await credential.getToken(redisScope);
      console.log("access Token", accessToken);
    
      // Create redis client and connect to the Azure Cache for Redis over the TLS port using the access token as password.
      const cacheConnection = createClient({
        username: process.env.REDIS_SERVICE_PRINCIPAL_ID,
        password: accessToken.token,
        url: `redis://${process.env.AZURE_CACHE_FOR_REDIS_HOST_NAME}:6380`,
        pingInterval: 100000,
        socket: { 
          tls: true,
          keepAlive: 0 
        },
      });
    
      cacheConnection.on("error", (err) => console.log("Redis Client Error", err));
      await cacheConnection.connect();
    
      // PING command
      console.log("\nCache command: PING");
      console.log("Cache response : " + await cacheConnection.ping());
    
      // SET
      console.log("\nCache command: SET Message");
      console.log("Cache response : " + await cacheConnection.set("Message",
          "Hello! The cache is working from Node.js!"));
    
      // GET
      console.log("\nCache command: GET Message");
      console.log("Cache response : " + await cacheConnection.get("Message"));
    
      // Client list, useful to see if connection list is growing...
      console.log("\nCache command: CLIENT LIST");
      console.log("Cache response : " + await cacheConnection.sendCommand(["CLIENT", "LIST"]));
    
      cacheConnection.disconnect();
    
      return "Done"
    }
    
    main().then((result) => console.log(result)).catch(ex => console.log(ex));
    
  4. Exécutez le script avec Node.js.

    node redistest.js
    
  5. La sortie de votre code ressemble à ceci.

    Cache command: PING
    Cache response : PONG
    
    Cache command: GET Message
    Cache response : Hello! The cache is working from Node.js!
    
    Cache command: SET Message
    Cache response : OK
    
    Cache command: GET Message
    Cache response : Hello! The cache is working from Node.js!
    
    Cache command: CLIENT LIST
    Cache response : id=10017364 addr=76.22.73.183:59380 fd=221 name= age=1 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=26 qbuf-free=32742 argv-mem=10 obl=0 oll=0 omem=0 tot-mem=61466 ow=0 owmem=0 events=r cmd=client user=default numops=6
    
    Done
    

Créer un exemple d’application JavaScript avec réauthentification

Les jetons d’accès Microsoft Entra ID ont une durée de vie limitée, en moyenne 75 minutes. Pour maintenir une connexion à votre cache, vous devez actualiser le jeton. Cet exemple montre comment procéder en utilisant JavaScript.

  1. Créez un fichier de script nommé redistestreauth.js.

  2. Ajoutez l’exemple JavaScript suivant au fichier.

     const { createClient } = require("redis");
     const { DefaultAzureCredential } = require("@azure/identity");
    
     async function returnPassword(credential) {
         const redisScope = "https://redis.azure.com/.default";
    
         // Fetch a Microsoft Entra token to be used for authentication. This token will be used as the password.
         return credential.getToken(redisScope);
     }
    
     async function main() {
       // Construct a Token Credential from Identity library, e.g. ClientSecretCredential / ClientCertificateCredential / ManagedIdentityCredential, etc.
       const credential = new DefaultAzureCredential();
       let accessToken = await returnPassword(credential);
    
       // Create redis client and connect to the Azure Cache for Redis over the TLS port using the access token as password.
       let cacheConnection = createClient({
         username: process.env.REDIS_SERVICE_PRINCIPAL_ID,
         password: accessToken.token,
         url: `redis://${process.env.AZURE_CACHE_FOR_REDIS_HOST_NAME}:6380`,
         pingInterval: 100000,
         socket: { 
           tls: true,
           keepAlive: 0 
         },
       });
    
       cacheConnection.on("error", (err) => console.log("Redis Client Error", err));
       await cacheConnection.connect();
    
       for (let i = 0; i < 3; i++) {
         try {
             // PING command
             console.log("\nCache command: PING");
             console.log("Cache response : " + await cacheConnection.ping());
    
             // SET
             console.log("\nCache command: SET Message");
             console.log("Cache response : " + await cacheConnection.set("Message",
                 "Hello! The cache is working from Node.js!"));
    
             // GET
             console.log("\nCache command: GET Message");
             console.log("Cache response : " + await cacheConnection.get("Message"));
    
             // Client list, useful to see if connection list is growing...
             console.log("\nCache command: CLIENT LIST");
             console.log("Cache response : " + await cacheConnection.sendCommand(["CLIENT", "LIST"]));
           break;
         } catch (e) {
           console.log("error during redis get", e.toString());
           if ((accessToken.expiresOnTimestamp <= Date.now())|| (redis.status === "end" || "close") ) {
             await redis.disconnect();
             accessToken = await returnPassword(credential);
             cacheConnection = createClient({
               username: process.env.REDIS_SERVICE_PRINCIPAL_ID,
               password: accessToken.token,
               url: `redis://${process.env.AZURE_CACHE_FOR_REDIS_HOST_NAME}:6380`,
               pingInterval: 100000,
               socket: {
                 tls: true,
                 keepAlive: 0
               },
             });
           }
         }
       }
     }
    
     main().then((result) => console.log(result)).catch(ex => console.log(ex));
    
  3. Exécutez le script avec Node.js.

    node redistestreauth.js
    
  4. La sortie de votre code ressemble à ceci.

     Cache command: PING
     Cache response : PONG
    
     Cache command: GET Message
     Cache response : Hello! The cache is working from Node.js!
    
     Cache command: SET Message
     Cache response : OK
    
     Cache command: GET Message
     Cache response : Hello! The cache is working from Node.js!
    
     Cache command: CLIENT LIST
     Cache response : id=10017364 addr=76.22.73.183:59380 fd=221 name= age=1 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=26 qbuf-free=32742 argv-mem=10 obl=0 oll=0 omem=0 tot-mem=61466 ow=0 owmem=0 events=r cmd=client user=default numops=6
    
    

Remarque

Pour obtenir d’autres exemples d’utilisation de Microsoft Entra ID pour s’authentifier auprès de Redis en utilisant la bibliothèque node-redis, veuillez consulter ce référentiel GitHub

Nettoyer les ressources

Si vous souhaitez continuer à utiliser les ressources que vous avez créées dans cet article, conservez le groupe de ressources.

Sinon, si vous avez terminé avec les ressources, vous pouvez supprimer le groupe de ressources Azure que vous avez créé pour éviter les frais.

Important

La suppression d’un groupe de ressources est irréversible. Quand vous supprimez un groupe de ressources, toutes les ressources qu’il contient sont supprimées définitivement. Veillez à ne pas supprimer accidentellement des ressources ou un groupe de ressources incorrects. Si vous avez créé les ressources dans un groupe de ressources existant contenant des ressources que vous souhaitez conserver, vous pouvez supprimer chaque ressource individuellement, au lieu de supprimer l’intégralité du groupe de ressources.

Pour supprimer un groupe de ressources

  1. Connectez-vous au Portail Azure, puis sélectionnez Groupes de ressources.

  2. Recherchez le groupe de ressources à supprimer.

    S’il existe de nombreux groupes de ressources, utilisez la zone Filtrer pour n’importe quel champ..., tapez le nom du groupe de ressources que vous avez créé pour cet article. Sélectionnez le groupe de ressources dans la liste des résultats.

    Capture d’écran montrant une liste de groupes de ressources à supprimer dans le volet de travail.

  3. Sélectionnez Supprimer le groupe de ressources.

  4. Vous êtes invité à confirmer la suppression du groupe de ressources. Saisissez le nom de votre groupe de ressources pour confirmer, puis sélectionnez Supprimer.

    Capture d’écran montrant un formulaire qui demande le nom de la ressource pour confirmer la suppression.

Après quelques instants, le groupe de ressources et toutes ses ressources sont supprimés.

Obtenir l’exemple de code

Obtenez le guide de démarrage rapideNode.js sur GitHub.

Dans ce guide de démarrage rapide, vous avez appris à utiliser le cache Azure pour Redis à partir d’une application Node.js. Passez au guide de démarrage rapide suivant pour utiliser le cache Azure pour Redis avec une application web ASP.NET.