Sécurité au niveau des lignes pour les lecteurs intégrés

Par exemple, supposons que le développeur X dispose d'une application Web pour ses clients. Les clients se connectent à l'application à l'aide de leurs propres identifiants et peuvent consulter les données de vente. pour différents magasins. Chaque client a accès à une liste différente de magasins. La souhaite intégrer un tableau de bord Looker Studio à son application que lorsqu'un client se connecte, il ne voit que les données de vente des magasins. auxquelles ils ont accès. Les clients ne doivent pas avoir à se connecter à leur compte Google pour que ce processus fonctionne.

La solution proposée nécessite que le développeur crée un connecteur de communauté, transmettre un jeton via l'URL d'intégration, puis filtrer les données en fonction du jeton.

Conditions requises

  • Les lecteurs du tableau de bord se connecteront à l'application tierce.
  • L'application doit transmettre un jeton unique au tableau de bord Looker Studio via une URL d'intégration. Le jeton peut être utilisé pour rechercher des informations de filtre ou faire chiffrer les informations du filtre.
  • Le connecteur de communauté doit pouvoir convertir le jeton en filtre valeurs.

Limites

  • Si vous êtes un client G Suite et que votre administrateur a désactivé le partage des fichiers Drive à "Tous les utilisateurs disposant du lien", vous ne pourrez pas les partager créer des rapports avec des utilisateurs extérieurs à votre organisation.

Solution

Suivez toutes les étapes ci-dessous pour implémenter la solution.

Générer un jeton utilisateur dans l'application Web

Générez un jeton unique pour chaque utilisateur connecté à votre application Web. ce jeton au tableau de bord intégré lors d'une prochaine étape.

Vous devez utiliser le jeton pour filtrer les données pertinentes. Plusieurs options sont disponibles :

  • Créer un point de terminaison d'API qui renvoie des données filtrées ou les informations utilisateur pour un jeton spécifique.
  • Chiffrer les informations utilisateur dans le jeton afin qu'il puisse être déchiffré ultérieurement dans le connecteur.

Créer un connecteur de communauté

Passez en revue le fonctionnement des connecteurs de communauté et suivez les Pour commencer, suivez l'atelier de programmation du connecteur de communauté. Utilisez les des outils de développement en local pour la création de connecteurs, qui simplifient et accélèrent de développement d'applications.

Écrire le code du connecteur

  1. getConfig() doit renvoyer au moins un élément de configuration. Cela servira à Capturez un jeton à partir des paramètres de l'URL d'intégration.

    function getConfig(request) {
      var cc = DataStudioApp.createCommunityConnector();
      var config = cc.getConfig();
    
      config
          .newTextInput()
          .setId('token')
          .setName('Enter user token');
    
      // TODO: Add additional config values if applicable for your connector
    
      config.setDateRangeRequired(false);
      config.setIsSteppedConfig(false);
    
      return config.build();
    }
    
  2. getData() a accès au jeton via le request.configParams. utiliser le jeton pour récupérer les données filtrées ; et filtrer les données récupérées existantes.
    Pour reprendre l'exemple ci-dessus, le jeton serait request.configParams.token Dans getData(), le jeton est transmis à un objet REST Point de terminaison de l'API pour obtenir la liste des ID de magasin. Ces ID de magasin sont ensuite utilisés pour construire la requête SQL afin d'extraire les données de vente.

    var STORE_ID_API = 'https://www.example.com/api/storeid';
    var QUERY_STRING_PREFIX = "SELECT StoreName, Sales from stores"
    
    function getData(request) {
      var token = request.configParams.token;
    
      var storeIds = getStoreIdList(token);
      var queryString = constructQueryString(storeIds);
      var fetchedData = fetchData(queryString);
    
      // rest of getData() implementation
    }
    
    function getStoreIdList(token) {
      var url = STORE_ID_API;
      var response = UrlFetchApp.fetch(url);
      var parsedResponse = JSON.parse(response);
      return parsedResponse.storeIds;
    }
    
    function constructQueryString(storeIds) {
      var storeIdString = storeIds.join(',');
      var queryString = QUERY_STRING_PREFIX
                        + ' WHERE storeId in ('
                        + storeIdString
                        + ')';
      return queryString;
    }
    

Créer le tableau de bord

  1. Découvrez le fonctionnement des déploiements et versions des connecteurs.
  2. Créez un déploiement de production pour le connecteur.
  3. Utilisez le lien "Déploiement en production" pour créer une source de données et un rapport dans Looker Studio.
  4. Pour le paramètre de configuration token, Autorisez les lecteurs du rapport à modifier les valeurs des paramètres.
  5. Partagez le tableau de bord avec les utilisateurs sélectionnés ou avec "Tout utilisateur de .
  6. Activez l'intégration du rapport.

Intégrer le tableau de bord à votre plate-forme

  1. Découvrez le fonctionnement des paramètres d'URL des rapports.
  2. Transmettez la valeur du jeton généré dynamiquement à l'aide de paramètres d'URL à la fonction le rapport Looker Studio intégré.
    Votre URL d'intégration ressemblera à ceci:
    `https://lookerstudio.google.com/embed/reporting/REPORT_ID/page/PAGE_ID?config=%7B%22ds0%22%3A%7B%22token%22%3A%22TOKEN_VALUE%22%7D%7D

Recommandations

  • Vous devez créer un jeton de courte durée.
  • Assurez-vous que le tableau de bord ne divulgue aucune information lorsque l'utilisateur est affiché à l'aide d'un jeton non valide.