Configurer les applications connectées à Tableau afin d’activer l'authentification unique pour le contenu intégré

Depuis Tableau Server version 2022.1,, les applications connectées à Tableau offrent une expérience d'authentification transparente et sécurisée en facilitant une relation de confiance explicite entre votre site Tableau Server et les applications personnalisées dans lesquelles le contenu Tableau est intégré. Dans Tableau Server 2022.3, les applications connectées à Tableau ont étendu leurs capacités de manière à prendre en charge l’autorisation de l’API REST. Et depuis Tableau Server 2023.3, l’autorisation de l’API REST via les applications connectées est prise en considération par l’API Metadata.

Les applications connectées offrent les avantages suivants :

  • Restreindre l'accès aux emplacements où un contenu peut être intégré et là où ce contenu peut être intégré
  • Offrir aux utilisateurs la possibilité d'accéder au contenu intégré à l'aide de l'authentification unique (SSO) sans avoir à effectuer une intégration avec un fournisseur d'identité (IdP)
  • Fournir aux utilisateurs la possibilité de s'authentifier directement depuis votre application externe
  • Autoriser par programme l’accès à l’API REST de Tableau (et l’API Metadata depuis Tableau Server 2023.3) pour le compte des utilisateurs à l’aide d’un jeton Web JSON (JWT)

Remarques :

  • La fonctionnalité d’applications connectées, sans interface utilisateur, pour Tableau Server est devenue disponible dans Tableau Server version 2021.4 via les méthodes d'application connectée(Le lien s’ouvre dans une nouvelle fenêtre) dans l'API Tableau REST.
  • Pour activer l'intégration via des applications connectées, Tableau Server doit être configuré de manière à utiliser SSL pour le trafic HTTP.
  • Pour que le jeton de session soit valide, les horloges de l'application externe et du serveur hébergeant l'application externe doivent être définies sur le temps universel coordonné (UTC). Si l'une ou l'autre des horloges utilise une norme différente, l'application connectée ne sera pas approuvée.
  • Les applications connectées à Tableau et les applications connectées à Salesforce sont différentes et offrent des fonctionnalités différentes. Aujourd'hui, les applications connectées à Tableau sont optimisées pour intégrer des vues et des métriques Tableau dans des applications externes. (En octobre 2023, Tableau a supprimé la possibilité d’intégrer des métriques dans Tableau Cloud et Tableau Server version 2023.3.)

Comment fonctionnent les applications connectées

La relation de confiance entre votre site Tableau Server et l'application externe est établie et vérifiée via un jeton d'authentification observant la norme JSON Web Token (JWT). Elle utilise un secret partagé fourni par l'application connectée à Tableau et signé par votre application externe.

Composants clés d'une application connectée

Les composants suivants de l’application connectée fonctionnent avec le jeton JWT dans votre application externe pour authentifier les utilisateurs et afficher le contenu intégré.

  • Secrets : les secrets sont des clés partagées par Tableau et votre application externe. Ils sont utilisés dans les signatures qui constituent le jeton JWT. Un secret est requis en cas d'utilisation d'applications connectées pour intégrer l'authentification. Les secrets peuvent être créés dans une application connectée, n'expirent pas et restent valides jusqu'à leur suppression.
  • Liste d'autorisations de domaines : vous pouvez spécifier une liste de domaines autorisés dans chaque application connectée. Le contenu Tableau intégré via une application connectée n'est autorisé que dans les domaines spécifiés. Cela permet de garantir que le contenu est exposé sous des domaines sécurisés et approuvés par votre entreprise.
  • Niveau d'accès : vous pouvez spécifier quel contenu peut être intégré via une application connectée en associant une application connectée à un projet ou à tous les projets. Si vous spécifiez un projet, seul le contenu du projet sélectionné peut être intégré via l'application connectée.

Workflow de l'application connectée

Le schéma ci-dessous illustre le fonctionnement de l'authentification entre votre application externe (serveur Web et page Web) et l'application connectée.

  1. L'utilisateur visite la page Web : lorsqu'un utilisateur visite le contenu intégré sur une page Web, la page Web envoie une demande GET à votre application externe pour récupérer le code HTML sur cette page Web.
  2. L'application externe construit un jeton d'authentification : l’application externe construit un jeton JWT, qui contient un secret de l'application connectée (voir l'étape 3 ci-dessous pour les exigences JWT supplémentaires) et la portée de l'accès utilisateur pour le contenu intégré. Le secret est signé par l’application externe et est utilisé pour vérifier la relation de confiance dans une étape ultérieure.
  3. L'application externe répond avec un jeton d'authentification : l’application externe répond à la page avec le jeton JWT dans l'URL du contenu intégré appelée par la page Web.
  4. La page Web demande du contenu à Tableau : lors de la tentative de chargement du contenu intégré, la page Web appelle l'URL du contenu intégré, qui envoie une requête GET à Tableau.
  5. Tableau valide le jeton : Tableau reçoit le jeton JWT et vérifie la relation de confiance avec l'application externe en identifiant l'application connectée et le secret partagé utilisé dans le jeton JWT. Tableau crée ensuite une session pour l'utilisateur. La session respecte non seulement les étendues d'intégration définies dans le JWT, mais également les restrictions spécifiées dans l'application connectée, y compris les domaines autorisés et les projets autorisés.
  6. Tableau renvoie le contenu en fonction du contexte d'intégration restreint : le contenu intégré se charge uniquement lorsque la page se trouve sous un domaine autorisé et que le contenu est publié dans un projet autorisé (le cas échéant). L'utilisateur authentifié ne peut interagir avec le contenu intégré que par la portée définie dans le jeton JWT.

Créer une application connectée

Étape 1 : Créer une application connectée

Créez une application connectée à partir de la page Paramètres de Tableau Server.

  1. En tant qu’administrateur de serveur, connectez-vous à Tableau Server.

  2. Dans le volet de gauche, sélectionnez Paramètres > Applications connectées, puis cliquez sur le bouton Nouvelle application connectée.

  3. Dans la boîte de dialogue Créer une application connectée, effectuez l'une des opérations suivantes :
    1. Pour les workflows d’autorisation de l’API REST (y compris les workflows de l’API Metadata qui utilisent l’API REST pour l’authentification), dans la zone de texte Nom de l’application connectée, entrez un nom pour l’application connectée et cliquez sur le bouton Créer.

      Remarque : vous pouvez ignorer le Niveau d’accès et la Liste d’autorisations du domaine lors de la configuration d’une application connectée pour l’autorisation de l’API REST et de l’API Metadata.

    2. Pour intégrer des workflows, procédez comme suit :

      1. Dans la zone de texte Nom de l'application connectée, saisissez un nom pour l'application connectée.

      2. Dans le menu déroulant S'applique à, sélectionnez Tous les projets ou Un seul projet pour contrôler les vues ou les métriques pouvant être intégrées. Si vous sélectionnez l'option « Un seul projet », sélectionnez le projet spécifique à cibler. Pour plus d'informations sur ces deux options, consultez Niveau d’accès (intégration des workflows uniquement).

      3. Dans la liste d'autorisations de domaines, spécifiez les domaines à l'aide des règles décrites dans Formatage de domaine ci-dessous pour contrôler où les vues ou les métriques peuvent être intégrées.

      4. Une fois terminé, cliquez sur le bouton Créer.

  4. À côté du nom de l’application connectée, cliquez sur le menu Actions et sélectionnez Activer. Pour des raisons de sécurité, une application connectée est désactivée par défaut lors de sa création.

  5. Notez l'ID de l'application connectée, également appelé ID client, à utiliser à l'étape 3 ci-dessous.

Étape 2 : Générer un secret

Vous pouvez générer un total de deux secrets pour chaque application connectée. Le deuxième secret peut être utilisé à des fins de rotation des secrets pour renforcer la protection contre les problèmes si un secret est compromis.

  1. Dans la page de détails de l'application connectée que vous avez créée à l'étape 1, cliquez sur le bouton Générer un nouveau secret.

  2. Notez l'ID secret et la valeur secrète à utiliser à l'étape 3 ci-dessous.

Étape 3 : Configurer le JWT

Après avoir généré un secret, vous souhaitez permettre à votre application personnalisée d'envoyer un jeton JWT valide. JWT est une norme utilisée pour transférer en toute sécurité des informations entre deux parties. Le jeton JWT est signé par votre application externe pour envoyer des informations à Tableau Server en toute sécurité. Le JWT référence l'application connectée, l'utilisateur pour lequel la session est générée et le niveau d'accès que l'utilisateur doit avoir.

Un JWT valide comprend les informations suivantes :

  • ID d'application connectée, également appelé ID client, à partir de l'étape 1
  • ID secret et valeur secrète générés à l'étape 2

  • Revendications enregistrées et en-tête :

    RevendicationNomDescription ou valeur requise
    "kid"ID secretObligatoire (dans l'en-tête). L'ID de secret de l'application connectée.
    "iss"ÉmetteurObligatoire (dans l'en-tête). URI d'émetteur unique qui identifie l'application de connexion de confiance et sa clé de signature.
    "alg"AlgorithmeObligatoire (dans l'en-tête). Algorithme de signature JWT. Seul HS256 est pris en charge.
    "sub"SujetNom d'utilisateur de l'utilisateur Tableau Server authentifié.
    "aud"AudienceLa valeur doit être : "tableau".
    "exp"Date d'expiration

    Un jeton JWT ne doit pas avoir expiré. Le délai d'expiration du JWT doit être compris dans la période de validité maximale configurée. La période de validité maximale peut être configurée à l'aide de la commande tsm vizportal.oauth.connected_apps.max_expiration_period_in_minutes.

    "jti"ID JWTObligatoire en tant que réclamation. La demande d'ID JWT fournit un identifiant unique pour le jeton JWT et est sensible à la casse.
    "scp"

    Important : n'utilisez pas "scope".

    PortéePour l'intégration de workflows, les valeurs prises en charge incluent :

    "tableau:views:embed"
    "tableau:views:embed_authoring " (ajouté dans Tableau Server 2022.3)
    "tableau:metrics:embed" (supprimé dans Tableau Server 2023.3)
    "tableau:ask_data:embed" (ajouté dans Tableau Server version 2023.1)

    Remarques :

    • Les valeurs doivent être transmises sous forme de type de liste.
    • Pour tableau:views:embed, la portée respecte les autorisations utilisateur déjà configurées dans Tableau Server et permet aux utilisateurs d'interagir avec les outils dans la vue intégrée s'ils sont disponibles dans la vue d'origine.
    • Nous recommandons que le code d'intégration exclue le paramètre de la barre d'outils. Pour plus d'informations, consultez Problèmes connus (intégration des workflows uniquement) ci-dessous.

    Pour les workflows d'autorisation de l'API REST, consultez Méthodes d'API REST prenant en charge l'autorisation JWT.

    Pour les workflows de l’API Metadata qui utilisent l’API REST pour l’authentification, la seule portée prise en charge est tableau:content:read.

Exemples de jetons JWT

Voici des exemples de JWT dans les langages Java et Python. Les exemples Java et Python utilisent la bibliothèque nimbus-jose-jwt et la bibliothèque PyJWT respectivement.

Java

import com.nimbusds.jose.*;
import com.nimbusds.jose.crypto.*;
import com.nimbusds.jwt.*;

import java.util.*;

...
				
String secret = "secretvalue";
	String kid = "connectedAppSecretId";
	String clientId = "connectedAppClientId";
	List<String> scopes = new
ArrayList<>(Arrays.asList("tableau:views:embed"));
	String username = "username";
	JWSSigner signer = new MACSigner(secret);
	JWSHeader header = new
JWSHeader.Builder(JWSAlgorithm.HS256).keyID(kid).customParam("iss", clientId).build();
	JWTClaimsSet claimsSet = new JWTClaimsSet.Builder()
		.issuer(clientId)
		.expirationTime(new Date(new Date().getTime() + 60 * 1000)) //expires in 1 minute
		.jwtID(UUID.randomUUID().toString())
		.audience("tableau")
		.subject(username)
		.claim("scp", scopes)
		.build();
	SignedJWT signedJWT = new SignedJWT(header, claimsSet);
	signedJWT.sign(signer);
	model.addAttribute("token", signedJWT.serialize());

Python

import jwt
token = jwt.encode(
	{
		"iss": connectedAppClientId,
		"exp": datetime.datetime.utcnow() + datetime.timedelta(minutes=5),
		"jti": str(uuid.uuid4()),
		"aud": "tableau",
		"sub": user,
		"scp": ["tableau:views:embed", "tableau:metrics:embed"]
	},
		connectedAppSecretKey,
		algorithm = "HS256",
		headers = {
		'kid': connectedAppSecretId,
		'iss': connectedAppClientId
        }
  )

Une fois que vous avez configuré le jeton JWT, lorsque le code est exécuté par votre application externe, il génère un jeton.

Étape 4 : Étapes suivantes

Pour intégrer des workflows

Une fois le jeton JWT configuré, vous devez ajouter le code d'intégration à votre application externe. Assurez-vous d'inclure le jeton JWT valide que vous avez configuré à l'étape 3 ci-dessus dans le composant Web appelé par votre application externe.

Pour plus d'informations sur l'intégration de contenu Tableau, consultez l'un des éléments suivants ou les deux :

Remarque : pour que les utilisateurs s'authentifient avec succès lorsqu'ils accèdent au contenu intégré, leurs navigateurs doivent être configurés de manière à autoriser les cookies tiers.

Pour les workflows d'autorisation de l'API REST

Une fois le jeton JWT configuré, vous devez ajouter le jeton JWT valide à la demande de connexion à l'API REST pour un accès autorisé. Pour plus d'informations, voir Portées d'accès pour les applications connectées.

Pour les workflows de l’API Metadata

Une fois le jeton JWT configuré, vous devez ajouter le jeton JWT valide à la demande de connexion de l’API REST. Pour plus d'informations, voir Portées d'accès pour les applications connectées.

Gérer une application connectée

La page Applications connectées vous permet de gérer toutes les applications connectées pour votre site. Vous pouvez effectuer des tâches telles que créer, supprimer et désactiver des applications connectées, et également révoquer ou générer de nouveaux secrets si des secrets existants ont été compromis.

  1. En tant qu'administrateur de serveur ou de site, connectez-vous à Tableau Server.

  2. Dans le volet de gauche, sélectionnez Paramètres > Applications connectées.

  3. Cochez la case en regard de l'application connectée que vous souhaitez gérer et effectuez une ou plusieurs des opérations suivantes :

    • Générez un nouveau secret en fonction du calendrier de rotation spécifié par les politiques de sécurité de votre organisation. Pour générer un secret supplémentaire, cliquez sur le nom de l'application connectée, puis sur le bouton Générer un nouveau secret. Une application connectée peut avoir au maximum deux secrets. Les deux secrets peuvent être actifs en même temps, n'expirent pas et restent valides jusqu'à leur suppression.

    • Passez en revue les détails de l'application connectée en cliquant sur le nom de l'application connectée pour voir quand l'application connectée a été créée, son ID, la portée de projet et de domaine, ainsi que ses secrets.

    • Modifiez la portée ou le domaine du projet, dans le menu Actions, sélectionnez Modifier. Apportez les modifications souhaitées, puis cliquez sur Mettre à jour.

      Remarque : si vous modifiez la portée du projet ou du domaine et que le contenu intégré n'existe ni dans le nouveau projet ni dans le nouveau domaine, la vue ou la métrique intégrée ne peut pa s'afficher et les utilisateurs verront une erreur lors de l'accès au contenu intégré.

    • Pour supprimer un secret, cliquez sur le nom de l'application connectée. Dans la page de l'application connectée, cliquez sur Actions à côté du secret et sélectionnez Supprimer. Dans la boîte de dialogue de confirmation, sélectionnez l'onglet Supprimer.

      Remarque : si le secret de l’application connectée est utilisé par une application externe, la métrique ou la vue intégrée ne peut pas s’afficher une fois le secret supprimé. Pour plus d'informations, voir Effets de la désactivation ou de la suppression d'une application connectée, ou de la suppression d'un secret ci-dessous.

    • Pour désactiver une application connectée, dans le menu Actions, sélectionnez Désactiver. Si l’application connectée est utilisée par l’application externe, la métrique ou la vue intégrée ne peut pas s’afficher après la désactivation de l’application connectée. Pour plus d'informations, voir Effets de la désactivation ou de la suppression d'une application connectée, ou de la suppression d'un secret ci-dessous.

Effets de la désactivation ou de la suppression d'une application connectée, ou de la suppression d'un secret

Pour afficher une vue ou une métrique intégrée à l’intention de votre utilisateur via une application connectée, l'application connectée doit être activée et un secret généré. Si l'application connectée est utilisée dans votre application externe et est désactivée ou supprimée, ou si son secret est supprimé ou remplacé, les utilisateurs reçoivent une erreur lors de l'accès au contenu intégré.

Pour éviter ce problème, assurez-vous que l'application de connexion est activée et que le JWT utilise l'ID et la valeur de secret corrects.

Niveau d’accès (intégration des workflows uniquement)

Vous pouvez sélectionner l'un des deux types de projets lors de la configuration du niveau d’accès pour une application connectée. Le niveau d'accès contrôle le contenu qui peut être intégré.

  • Tous les projets : cette option permet d'intégrer le contenu de tous les projets.
  • Un seul projet : cette option permet d'intégrer uniquement le contenu du projet spécifié. Si le projet spécifié contient des projets imbriqués, l'incorporation de contenu dans ces projets imbriqués n'est pas activée.

Règles de liste d'autorisations de domaine (intégration de workflows uniquement)

La liste d'autorisations de domaines de l'application connectée vous permet de restreindre l'accès au contenu Tableau intégré à tous les domaines ou à certains domaines, d’exclure certains domaines ou encore de bloquer tous les domaines.

Options de domaine

Vous pouvez sélectionner l'une des deux options lors de la configuration de la liste d'autorisations de domaines d'une application connectée :

  • Tous les domaines : par défaut, cette option permet un accès illimité au contenu intégré.
  • Domaines spécifiques uniquement : cette option vous permet de limiter l'accès au contenu intégré. Si vous utilisez cette option, suivez les règles de formatage spécifiées dans la section suivante, Formatage de domaine.

Formatage de domaine

Dans la zone de texte de la liste d’autorisations de domaines, vous pouvez saisir un domaine ou plusieurs domaines sur la base des exemples de formatage ci-dessous.

Remarque : les règles de formatage du domaine s’appliquent également en cas d’utilisation des Méthodes des applications connectées(Le lien s’ouvre dans une nouvelle fenêtre) dans l’API REST de Tableau.

Voici quelques exemples de formatage basés sur des scénarios courants :

Pour spécifier...ExempleIntégration de l'accès
Plage de domaines*.myco.comLe contenu intégré est accessible à partir de tous les sous-domaines sous myco.com.
Tous les portsmyco.com :*Le contenu intégré est accessible à partir de tous les sous-domaines dans myco.com.
Port spécifiquemyco.com:8080Le contenu intégré est accessible à partir du port 8080 dans myco.com uniquement.
Plusieurs domaines discretsmyco.com
events.myco.com
ops.myco.com

Le contenu intégré est accessible à partir des trois domaines.

Remarque : lorsque vous spécifiez plusieurs domaines, tapez chaque domaine sur une nouvelle ligne ou séparez les domaines par un espace. Pour l’API REST, les domaines doivent être séparés par un espace.

Trafic sécurisé uniquementhttps :Le contenu intégré est accessible en toute sécurité quel que soit le domaine.
Trafic sécurisé vers tous les ports pour une plage de domaineshttps :*myco.com:*Le contenu intégré est accessible de manière sécurisée à partir de tous les ports sur tous les sous-domaines dans myco.com.
Aucun domaine[no domains]L'accès au contenu intégré est bloqué.

Problèmes connus (intégration des workflows uniquement)

Il existe quelques problèmes connus liés à l'utilisation d'applications connectées. Ils seront corrigés dans une future version.

  • Fonctionnalités de la barre d'outils : lorsque le paramètre de barre d'outils est défini pour le contenu intégré, les fonctionnalités de la barre d'outils ne fonctionneront pas toutes. Pour contourner ce problème, nous vous recommandons de masquer le paramètre de la barre d'outils comme dans l'exemple ci-dessous.

    <tableau-viz id='tab-viz' src='https://<your_server>/t/<your_site>/...'
    	toolbar='hidden'>
    </tableau-viz>

  • Sources de données publiées : les sources de données publiées définies sur Inviter l'utilisateur pour les informations d'identification de la base de données ne s'afficheront pas. Pour contourner ce problème, si possible, nous recommandons aux propriétaires de sources de données d'intégrer à la place leurs informations d'identification pour la base de données.
  • Objets Parle aux données dans les tableaux de bord intégrés : les objets Parle aux données dans les tableaux de bord intégrés ne se chargent pas.

  • Métriques et listes d'autorisations de domaine : les vues de métriques intégrées s'affichent malgré les restrictions d'accès pouvant être spécifiées dans les listes d'autorisations de domaine des applications connectées. Remarque : les données de métriques accessibles à partir des barres d'outils des vues intégrées fonctionneront comme prévu. Dans Tableau Serveur 2023.3, la possibilité d’intégrer des métriques a été supprimée de Tableau.

Merci de vos commentaires !