Premiers pas avec l'intégration SSO

L'intégration de l'authentification unique (SSO) permet de présenter à vos utilisateurs des styles, des explorations, des tableaux de bord ou des tableaux de bord LookML intégrés, sans qu'ils aient à disposer d'informations de connexion Looker distinctes. Au lieu de cela, les utilisateurs seront authentifiés via votre propre application.

L'intégration SSO consiste à créer une URL Looker spéciale que vous utiliserez dans un iFrame. L'URL contient les informations que vous souhaitez partager, l'ID de l'utilisateur dans votre système et les autorisations que vous souhaitez accorder à cet utilisateur. Vous signerez ensuite l'URL avec une clé secrète fournie par Looker.

Hébergement approprié pour l'intégration SSO

Certains navigateurs (Internet Explorer et Safari au moment de la rédaction de ce document) utilisent par défaut une règle de blocage des cookies tiers. Looker utilise des cookies pour l'authentification des utilisateurs. Par conséquent, il n'est pas possible d'authentifier l'iFrame intégré sur plusieurs domaines (sauf si l'utilisateur modifie les paramètres de confidentialité des cookies de son navigateur). Par exemple, si vous souhaitez intégrer des informations sur https://mycompany.com, vous devez vous assurer que Looker est sur un sous-domaine, tel que https://analytics.mycompany.com.

Si Looker héberge votre instance, contactez l'assistance Looker pour définir la configuration DNS requise. Ouvrez une demande d'assistance dans le Centre d'aide de Looker en cliquant sur Nous contacter.

Si vous disposez d'une instance Looker hébergée par le client, assurez-vous que l'application qui utilise la représentation vectorielle continue SSO se trouve sur le même domaine de base que votre instance Looker.

Contrôler la visibilité des clients avec un système fermé

Dans une configuration d'intégration SSO, les utilisateurs de Looker présentent souvent des données à leurs propres clients, et des clients de différentes entreprises ou groupes ne doivent pas se connaître. Dans ce scénario, pour protéger les informations privées de vos clients, nous vous recommandons vivement de configurer Looker en tant que système fermé, également appelé installation mutualisée. Dans un système fermé, le contenu est cloisonné, ce qui empêche les utilisateurs de différents groupes de se connaître. C'est pourquoi nous vous recommandons d'activer l'option Système fermé avant d'accorder à des utilisateurs externes l'accès à votre instance.

Pour en savoir plus, consultez les articles Concevoir et configurer un système de niveaux d'accès et Bonnes pratiques de sécurité pour l'analyse intégrée.

Générer la clé secrète de Looker

Pour vérifier qu'une demande d'intégration SSO est légitime et qu'elle n'a pas été falsifiée par une autre personne, vous devez d'abord générer un "secret d'intégration". Pour ce faire :

  1. Accédez à la page Intégrer dans la section Administration de Looker.
  2. Sélectionnez Activé dans la liste déroulante Intégrer l'authentification SSO, puis cliquez sur Mettre à jour.
  3. Cliquez sur le bouton Réinitialiser le code secret pour générer le code secret d'intégration. Veillez à copier ce secret vers un emplacement sécurisé, car vous ne pourrez pas le récupérer à partir de Looker sans le réinitialiser. Si vous réinitialisez la clé, les intégrations qui utilisaient l'ancienne clé ne fonctionneront plus.

Toute personne ayant accès à la clé secrète peut créer une URL pour accéder à tout modèle auquel une instance Looker est connectée, avec n'importe quel utilisateur, avec n'importe quelle autorisation. Protégez le secret d'intégration de l'authentification unique comme vous le feriez pour gérer les identifiants de votre instance Looker intégrée, et conservez l'intégration de l'authentification unique si vous ne l'utilisez pas.

Créer l'URL d'intégration

Pour créer l'URL appropriée, vous devez écrire du code afin de pouvoir encoder correctement l'URL avec votre clé secrète et générer d'autres éléments liés à la sécurité. Vous trouverez plusieurs exemples de scripts dans notre dépôt GitHub d'exemples SSO. Les sections suivantes décrivent les informations que vous devrez fournir à ces scripts.

Collecter les informations Looker nécessaires

Pour commencer, vous devez déterminer toutes les informations à inclure dans votre URL. Vous avez alors besoin de :

Intégrer une URL

Récupérez l'URL de l'interface, de l'exploration ou du tableau de bord que vous souhaitez intégrer. Supprimez ensuite le domaine et placez /embed avant le chemin d'accès, comme suit:

Élément Format d'URL normal Intégrer une URL
Look https://instance_name.looker.com/
looks/4
/embed/looks/4
Explorer https://instance_name.looker.com/
explore/my_model/my_explore
/embed/explore/my_model/my_explore
Tableau de bord défini par l'utilisateur https://instance_name.looker.com/
dashboards-next/1
/embed/dashboards-next/1
Ancien
tableau de bord défini par l'utilisateur
https://instance_name.looker.com/
dashboards/1
/embed/dashboards/1
tableau de bord LookML https://instance_name.looker.com/
dashboards-next/my_model::my_dashboard
/embed/dashboards-next/my_model::my_dashboard
Tableau de bord
ancien LookML
https://instance_name.looker.com/
dashboards/my_model::my_dashboard
/embed/dashboards/my_model::my_dashboard

Le contenu intégré reflète toujours la version de production du contenu. Les modifications effectuées en mode développement qui affectent le contenu et qui n'ont pas été déployées en production n'apparaîtront pas dans une intégration.

Autorisations

Un ensemble d'autorisations définit ce qu'un utilisateur ou un groupe peut faire. Les autorisations peuvent être appliquées de deux manières:

  • Modèle spécifique:ce type d'autorisation ne s'applique qu'aux ensembles de modèles associés au même rôle.
  • Au niveau de l'instance:ce type d'autorisation s'applique à l'instance Looker dans son ensemble. Les utilisateurs intégrés qui disposent d'autorisations à l'échelle de l'instance peuvent exécuter certaines fonctions sur l'ensemble de l'instance Looker, mais ne peuvent pas accéder au contenu basé sur des modèles non inclus dans l'ensemble de modèles de leur rôle.

Déterminez les autorisations que vous souhaitez accorder à l'utilisateur. La liste suivante répertorie toutes les autorisations disponibles pour l'intégration SSO. Les autorisations qui ne figurent pas sur la liste suivante ne sont pas compatibles avec l'intégration SSO:

Permission Dépend de Type Définition
access_data Aucun Spécifique au modèle Autorise l'utilisateur à accéder aux données (nécessaire pour afficher les looks, les tableaux de bord ou les explorations)
see_lookml_dashboards access_data Spécifique au modèle Permet à l'utilisateur de voir les tableaux de bord LookML.
see_looks access_data Spécifique au modèle Permet à l'utilisateur de voir les styles
see_user_dashboards see_looks Spécifique au modèle Permet à l'utilisateur de consulter les tableaux de bord définis par l'utilisateur et de parcourir les dossiers à partir d'une intégration.
explore see_looks Spécifique au modèle Permet à l'utilisateur de voir les pages Explorer
create_table_calculations explore Au niveau de l'instance Nécessaire pour créer des calculs de table à partir d'une fonction Explorer
save_content see_looks Au niveau de l'instance Permet à l'utilisateur d'apporter des modifications aux styles et aux tableaux de bord et de les enregistrer
send_outgoing_webhook see_looks Spécifique au modèle Permet à l'utilisateur de planifier des tableaux de bord et consulte un webhook arbitraire
send_to_s3 see_looks Spécifique au modèle Permet à l'utilisateur de planifier des tableaux de bord et ressemble à un bucket Amazon S3
send_to_sftp see_looks Spécifique au modèle Permet à l'utilisateur de planifier des tableaux de bord et consulte un serveur SFTP
schedule_look_emails see_looks Spécifique au modèle Permet à l'utilisateur de planifier l'envoi des tableaux de bord et des e-mails à sa propre adresse e-mail (définie avec un attribut utilisateur nommé "email") ou à une adresse e-mail respectant les limites définies par la liste d'autorisation de domaines de messagerie. Autorise l'utilisateur disposant des autorisations create_alerts à envoyer des notifications d'alerte à une adresse e-mail soumise aux limites définies par la liste d'autorisation des domaines de messagerie.
schedule_external_look_emails schedule_look_
emails
Spécifique au modèle Permet à l'utilisateur de planifier des tableaux de bord et l'envoi de looks à n'importe quel e-mail. Autorise l'utilisateur disposant des autorisations create_alerts à envoyer des notifications d'alerte à n'importe quel domaine de messagerie.
send_to_
integration
see_looks Spécifique au modèle Permet à l'utilisateur de diffuser du contenu Looker aux services tiers intégrés à Looker via Looker Action Hub. Cette autorisation n'est pas liée aux actions sur les données.
create_alerts see_looks Au niveau de l'instance Permet à l'utilisateur de créer des alertes sur les tuiles du tableau de bord afin de recevoir des notifications lorsque les conditions spécifiées sont remplies ou dépassées. Les utilisateurs peuvent modifier, dupliquer et supprimer leurs propres alertes, ainsi que les alertes publiques des autres utilisateurs. Si l'espace de travail Slack de l'utilisateur n'est pas connecté à l'instance Looker, l'utilisateur ne pourra pas créer d'alertes qui envoient des notifications à Slack.
download_with_limit see_looks Au niveau de l'instance Permet à l'utilisateur de télécharger les résultats d'une requête avec une limite appliquée
download_without_limit see_looks Au niveau de l'instance Permet à l'utilisateur de télécharger les résultats d'une requête sans appliquer de limite
see_sql see_looks Spécifique au modèle Permet à l'utilisateur de voir le SQL des requêtes et les erreurs SQL résultant de l'exécution des requêtes.
see_drill_overlay access_data Spécifique au modèle Permet à l'utilisateur d'effectuer des recherches sans avoir à accéder à la page "Explorer" complète.
embed_browse_spaces Aucun Au niveau de l'instance Active le navigateur de contenu pour qu'un utilisateur puisse parcourir les dossiers à partir d'une intégration. Tout utilisateur intégré qui dispose de l'autorisation embed_browse_spaces dispose d'un accès à un dossier d'intégration personnel et au dossier partagé de votre organisation, le cas échéant.

L'autorisation embed_browse_spaces est recommandée pour les utilisateurs disposant de l'autorisation save_content, afin qu'ils puissent parcourir les dossiers lorsqu'ils choisissent l'emplacement d'enregistrement du contenu.

Pour afficher le contenu des dossiers, l'utilisateur doit également disposer des autorisations see_looks, see_user_dashboards et see_lookml_dashboards.
embed_save_shared_space Aucun Au niveau de l'instance Permet à l'utilisateur disposant de l'autorisation save_content d'enregistrer du contenu dans le dossier partagé de l'organisation, le cas échéant. Les utilisateurs disposant de l'autorisation save_content, mais pas de l'autorisation embed_save_shared_space, pourront uniquement enregistrer du contenu dans leur dossier d'intégration personnel.

Accès au modèle

Déterminer les modèles LookML auxquels l'utilisateur doit avoir accès Il s'agit simplement d'une liste de noms de modèles.

Attributs utilisateur

Déterminez quels attributs utilisateur l'utilisateur doit avoir, le cas échéant. Vous aurez besoin du nom de l'attribut utilisateur de Looker, ainsi que de la valeur que l'utilisateur doit avoir pour cet attribut.

Groupes

Déterminez les groupes auxquels l'utilisateur doit appartenir, le cas échéant. Vous aurez besoin des ID de groupe et non des noms de groupe. L'ajout d'un utilisateur SSO à un groupe Looker vous permet de gérer l'accès de cet utilisateur aux dossiers Looker. Les utilisateurs de l'intégration SSO ont accès à tous les dossiers partagés avec les membres de leurs groupes Looker.

Vous pouvez également utiliser le paramètre external_group_id pour créer un groupe externe aux groupes Looker standards. Dans ce cas, les utilisateurs de l'intégration SSO avec le même external_group_id auront accès à un dossier partagé appelé "Groupe", propre au groupe externe.

Rôles intégrés

Les paramètres permissions et models créent un rôle pour l'utilisateur intégré. Ce rôle apparaît en tant que "Rôle intégré" sur la page Utilisateurs de la section Administration de Looker. Si les paramètres permissions, models et group_ids sont tous spécifiés dans l'URL d'intégration, le rôle intégré est additionnel à tous les rôles déjà attribués aux groupes répertoriés dans le paramètre group_ids. Cela équivaut aux rôles standards, car tous les rôles dans Looker s'ajoutent les uns aux autres.

Par exemple, supposons que vous ayez un groupe existant dans Looker avec l'ID de groupe 1, et que ce groupe dispose déjà de l'autorisation explore pour un modèle nommé model_one, et que vous créiez une URL d'intégration avec les paramètres suivants:

  • group_ids = [1]
  • permissions = ["access_data","see_looks"]
  • models = ["model_two"]

Dans ce cas, l'utilisateur intégré héritera de la possibilité d'afficher et d'explorer les données sur model_one, et le rôle d'intégration créé avec les paramètres précédents lui permettra également de consulter les données sur model_two.

Créer l'URL d'intégration

Une URL d'intégration SSO est au format suivant:

https://HOST/login/embed/EMBED URL?PARAMETERS&signature=SIGNATURE

L'hôte

L'hôte est l'emplacement où votre instance Looker est hébergée. Par exemple, analytics.mycompany.com. Veillez à inclure le numéro de port si vous n'avez pas activé le transfert de port, tel que analytics.mycompany.com:9999.

Intégrer une URL

L'URL d'intégration a été déterminée précédemment. Son format est le suivant:

  • /embed/looks/4
  • /embed/explore/my_model/my_explore
  • /embed/dashboards-next/1 ou /embed/dashboards/1
  • /embed/dashboards-next/my_model::my_dashboard ou /embed/dashboards/my_model::my_dashboard

Cela signifie que le format /embed//embed/ apparaîtra dans votre URL finale. C'est exact.

Si vous utilisez des événements JavaScript intégrés, veillez à ajouter un embed_domain (domaine où l'iFrame est utilisé) à la fin de l'URL d'intégration, comme suit:

`/embed/looks/4`
`/embed/looks/4?embed_domain=https://mywebsite.com`

embed_domain est ajouté après l'URL d'intégration et avant tout paramètre. Ainsi, si vous aviez des paramètres existants, tels que nonce=62, l'ajout de embed_domain ressemblerait à ceci:

`/embed/looks/4?nonce=626`
`/embed/looks/4?embed_domain=https://mywebsite.com?nonce=626`

Si vous utilisez le SDK Embed, assurez-vous d'ajouter embed_domain et d'inclure sdk=2 à la fin de l'URL d'intégration, comme suit:

`/embed/looks/4`
`/embed/looks/4?embed_domain=https://mywebsite.com&sdk=2`

Le paramètre sdk=2 permet à Looker d'identifier le SDK et de bénéficier de fonctionnalités supplémentaires fournies par le SDK. Le SDK ne peut pas ajouter ce paramètre, car il fait partie de l'URL d'authentification unique signée.

Paramètres

Les paramètres d'URL suivants permettent de spécifier les informations nécessaires à l'intégration SSO:

Paramètre Valeur obligatoire ? Description Type de données Exemple
nonce Yes Les chaînes aléatoires que vous souhaitez, mais elles ne peuvent pas être répétées dans un délai d'une heure et doivent contenir moins de 255 caractères.

Cela permet d'empêcher un pirate informatique de renvoyer l'URL d'un utilisateur légitime pour collecter des informations qu'il ne devrait pas avoir.
Chaîne JSON "22b1ee700ef3dc2f500fb7"
time Yes Heure actuelle sous forme d'horodatage UNIX. Integer 1407876784
session_length Yes Nombre de secondes pendant lesquelles l'utilisateur doit rester connecté à Looker, entre 0 et 2 592 000 secondes (30 jours). Integer 86400
external_user_id Yes Identifiant unique de l'utilisateur dans l'application qui intègre Looker. Looker utilise cette valeur pour différencier les utilisateurs de l'intégration SSO.

Vous pouvez créer cette chaîne comme vous le souhaitez. Cependant, cette valeur doit être unique pour un ensemble donné d'autorisations, d'attributs utilisateur et de modèles. Par exemple, si le même utilisateur dispose d'autorisations différentes dans deux contextes, il aura besoin de deux ID utilisateur externes différents.

Pour des raisons de sécurité, assurez-vous de ne pas utiliser le même external_user_id dans différentes sessions d'intégration pour différents utilisateurs interactifs.
Chaîne JSON "user-4"
permissions Yes Liste des autorisations dont l'utilisateur doit disposer.

Consultez la section Autorisations sur cette page pour obtenir la liste des autorisations autorisées.
Tableau de chaînes [
  "access_data",
  "see_looks"
]
models Yes Liste des noms de modèles auxquels l'utilisateur doit avoir accès. Tableau de chaînes [
  "model_one",
  "model_two"
]
group_ids Non Liste des groupes Looker auxquels l'utilisateur doit appartenir, le cas échéant. Utilisez des ID de groupe plutôt que des noms de groupe. Tableau d'entiers [4, 3]
external_group_id Non Identifiant unique du groupe auquel l'utilisateur appartient dans l'application qui intègre Looker, si vous le souhaitez.

Les utilisateurs autorisés à enregistrer du contenu et à partager un ID de groupe externe pourront enregistrer et modifier du contenu dans un dossier Looker partagé appelé "Group".
Chaîne JSON "Accounting"
user_attributes Non Liste des attributs utilisateur de l'utilisateur, le cas échéant. Contient une liste de noms d'attributs utilisateur suivis de la valeur de l'attribut utilisateur.

Si votre modèle LookML est localisé, vous pouvez utiliser l'attribut utilisateur locale dans l'URL d'intégration pour spécifier une langue pour l'intégration. Par exemple, si vous incluez le paramètre user_attributes { "locale" : "fr_FR" }, l'intégration chargera le français comme langue.
Hachage de chaînes {
  "vendor_id" : "17",
  "company" : "xactness"
}
access_filters Yes Dans Looker 3.10, ce paramètre est obsolète, mais il est toujours obligatoire dans l'URL. Utilisez access_filters avec un espace réservé vide, par exemple access_filters={}. Espace réservé vide {}
first_name Non Prénom de l'utilisateur. Si ce champ n'est pas renseigné, first_name conserve la valeur de la dernière requête ou est "Embed" (intégré) si aucun prénom n'a été défini. Chaîne JSON "Alice"
last_name Non Nom de l'utilisateur. Si ce champ n'est pas renseigné, last_name conserve la valeur de la dernière requête ou est "Embed" (intégrée) si aucun nom de famille n'a été défini. Chaîne JSON "Jones"
user_timezone Non Si vous avez activé l'option Fuseaux horaires spécifiques à l'utilisateur, définissez la valeur de l'option Fuseau horaire de la visionneuse dans la liste déroulante Fuseau horaire de l'interface ou du tableau de bord intégrés. Ce paramètre ne modifie pas directement le fuseau horaire dans lequel le contenu est affiché. L'utilisateur doit sélectionner le fuseau horaire souhaité dans le menu déroulant.

Consultez les valeurs valides sur la page de la documentation de référence sur les fuseaux horaires de l'intégration SSO.

Conseil pour l'équipe de chat:si vous souhaitez que votre contenu intégré corresponde au fuseau horaire de l'utilisateur, utilisez l'une des méthodes suivantes:
  • Ajoutez le paramètre ?query_timezone=user_timezone à l'URL d'intégration. Exemple:

    /embed/dashboards/1?query_timezone=user_timezone
  • Enregistrez le tableau de bord intégré ou la montre avec le fuseau horaire par défaut défini sur Viewer Time Zone (Fuseau horaire de l'utilisateur), qui utilisera par défaut le fuseau horaire de l'utilisateur pour les utilisateurs intégrés et non intégrés.
  • Chaîne JSON ou valeur null "US/Pacific"

    ou

    null
    force_logout_login Yes Si un utilisateur Looker normal est déjà connecté à Looker et qu'il voit un élément SSO intégré, vous pouvez choisir si:

    1) il doit afficher l'élément avec ses identifiants actuels

    ou

    2) il doit être déconnecté et reconnecté avec les identifiants SSO.
    Booléen (vrai ou faux) true

    Tous les paramètres précédents sont obligatoires, mais vous pouvez utiliser n'importe quel paramètre dont la colonne "Valeur requise ?" contient "Non" avec une valeur vide. Par exemple, vous pouvez utiliser group_ids [] ou user_attributes {}.

    Signature

    Pour générer la signature, procédez comme suit :

    1. Rassemblez les valeurs de paramètres suivantes dans cet ordre :
      • Hôte, suivi de login/embed/ (par exemple, analytics.mycompany.com/login/embed/)
      • Intégrer une URL
      • Nonce
      • Heure actuelle
      • Durée de la session
      • ID d'utilisateur externe
      • Autorisations
      • Modèles
      • ID de groupe
      • ID de groupe externe
      • Attributs utilisateur
      • Filtres d'accès (espace réservé vide)
    2. Mettre en forme toutes les valeurs autres que les URL d'hôte et d'intégration au format JSON
    3. Concaténez les valeurs avec des sauts de ligne (\n)
    4. Signez HMAC la chaîne concaténée avec votre secret d'intégration Looker.

    Encodage

    La dernière étape consiste à encoder votre URL.

    Avant d'encoder l'URL, une URL d'intégration correctement formatée qui utilise tous les paramètres possibles peut se présenter comme suit:

    https://analytics.mycompany.com/login/embed//embed/dashboards-next/1?
    nonce="22b1ee700ef3dc2f500fb7"&
    time=1407876784&
    session_length=86400&
    external_user_id="user-4"&
    permissions=["access_data","see_user_dashboards","see_looks"]&
    models=["model_one","model_two"]&
    group_ids=[4,3]&
    external_group_id="Allegra K"&
    user_attributes={"vendor_id":"17","company":"xactness"}&
    access_filters={}&
    first_name="Alice"&
    last_name="Jones"&
    user_timezone="US/Pacific"&
    force_logout_login=true&
    signature=123456789ABCDEFGHIJKL
    

    Comme indiqué précédemment, il est correct que /embed//embed/ s'affiche dans votre URL.

    Après avoir encodé l'URL, elle se présente comme suit:

    https://analytics.mycompany.com/login/embed/%2embed%2Fdashboards-next%2F1?
    nonce=%2222b1ee700ef3dc2f500fb7&%22&
    time=1407876784&
    session_length=86400&
    external_user_id=%22user-4%22&
    permissions=%5B%22access_data%22%2C%22see_user_dashboards%22%2C%22see_looks%22%5D&
    models=%5B%22model_one%22%2C%22model_two%22%5D&
    group_ids=%5B4%2C3%5D&
    external_group_id=%22Allegra%20K%22&
    user_attributes=%7B%22vendor_id%22%3A%2217%22%2C%22company%22%3A%22xactness%22%7D&
    access_filters%7B%7D%26%0A
    first_name=%22Alice%22&
    last_name=%22Jones%22&
    user_timezone=%22US%2FPacific%22&
    force_logout_login=true&
    signature=123456789ABCDEFGHIJKL
    

    Utiliser le point de terminaison de l'API create_sso_embed_url

    L'API Looker inclut le point de terminaison create_sso_embed_url, qui prend un ensemble de paramètres d'intégration SSO incluant l'URL du contenu que vous souhaitez intégrer et renvoie une URL SSO complète, encodée de manière chiffrée.

    Pour utiliser ce point de terminaison de l'API à partir d'un serveur Web, celui-ci doit pouvoir s'authentifier auprès de l'API Looker avec des droits d'administrateur. Le domaine du serveur Web doit également figurer dans la liste blanche des domaines intégrés.

    Vous pouvez également utiliser l'explorateur d'API sur votre instance Looker pour générer une URL SSO à l'aide de ce point de terminaison. Une fois générée, l'URL SSO doit être copiée exactement et ne peut être utilisée qu'une seule fois, sinon elle échouera. La documentation de l'API interactive est également utile pour générer une URL d'authentification unique et la comparer à une URL d'authentification unique créée manuellement à des fins de dépannage.

    Pour en savoir plus sur l'API Looker, consultez la page Présentation de l'API Looker.

    Tester l'URL d'intégration

    Pour tester votre URL finale, collez-la dans le module Embed URI Validator sur la page Embed (Intégrer) de la section Admin de Looker. Bien que cette option ne puisse pas vous indiquer si les données et les autorisations que vous prévoyez ont été correctement configurées, elle peut valider le bon fonctionnement de votre authentification.