Configurer les applications connectées avec l’approbation directe

Depuis Tableau Server 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 externes.

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.

Comment fonctionnent les applications connectées Tableau avec la confiance directe

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 ou l’autorisation API REST. 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 (intégrant des workflows uniquement) : 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(intégrant des workflows uniquement) : vous pouvez spécifier le contenu à intégrer 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. Si vous souhaitez spécifier plusieurs projets, vous devez utiliser l’API REST de Tableau.

Workflow de l’application connectée

Intégration des workflows

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 Tableau.

  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.

  3. Cliquez sur la flèche déroulante du bouton Nouvelle application connectée et sélectionnez Approbation directe.

    Remarque : si vous utilisez Tableau Server 2023.3 ou une version antérieure, cliquez sur le bouton Nouvelle application connectée.

  4. Dans la boîte de dialogue Créer une application connectée, effectuez une des opérations suivantes :
    • 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.

    • 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).

        Remarques : 

      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.

        Important : nous vous recommandons d’utiliser la liste d’autorisations de domaine comme meilleures pratiques de sécurité de manière à ce que le contenu Tableau soit intégré uniquement aux emplacements que vous autorisez.

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

  5. À 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.

  6. 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’identifiant de la clé secrète 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"PublicLa valeur doit être : "tableau".
    "exp"Date d’expiration Pour être valide, un JWT ne doit pas avoir expiré. La date d’expiration (en UTC) du jeton JWT doit être comprise 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 2023.1)

    Remarques :

    • Les valeurs doivent être transmises sous forme de type de liste.
    • Pour tableau:views:embed et tableau:views:embed_authoring, 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.

    https://tableau.com/groups Pour intégrer des workflows uniquement.

    La valeur doit correspondre au nom d’un ou de plusieurs groupes dans Tableau Server. Pour plus d’informations, consultez la section Adhésion dynamique à un groupe (intégration de workflows uniquement) ci-dessous.

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, 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 une application externe, la métrique ou la vue intégrée ne peut pas s’afficher une fois l’application connectée désactivé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 un contenu intégré à l’attention de votre utilisateur ou activer l’accès à l’API REST via une application connectée, l’application connectée doit être activée et son 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 recevront une erreur 403.

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.

À propos de plusieurs projets

À partir de Tableau Server 2024.2 , vous pouvez activer le contenu de plusieurs projets pour une application connectée à l’aide de l’API REST de Tableau uniquement. Pour spécifier les projets concernés, utilisez les « ID de projet » dans les méthodes Créer une application connectée(Le lien s’ouvre dans une nouvelle fenêtre) ou Mettre à jour une application connectée(Le lien s’ouvre dans une nouvelle fenêtre).

Remarque : lorsque plusieurs projets sont configurés pour votre application connectée, Tableau affiche Projets multiples pour le niveau d’accès de l’application connectée. Si vous sélectionnez soit Un seul projet, soit Tous les projets et que vous mettez à jour l’application connectée, l’option « Projets multiples » ne sera plus visible. Si vous devez à nouveau configurer l’application connectée pour plusieurs projets, vous devez utiliser l’API REST.

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.

Important : nous vous recommandons d’utiliser la liste d’autorisations de domaine comme meilleures pratiques de sécurité de manière à ce que le contenu Tableau soit intégré uniquement aux emplacements que vous autorisez.

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 de domaine s’appliquent également lors de l’utilisation des méthodes Connect App(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é.

Adhésion dynamique à un groupe (intégration de workflows uniquement)

Depuis Tableau Server 2024.2, si les applications connectées sont configurées et que le paramètre de la fonctionnalité est activé, vous pouvez contrôler l’adhésion à un groupe de manière dynamique via des revendications personnalisées incluses dans le JWT envoyé par l’application externe.

Lorsque l’option est configurée, lors de l’authentification utilisateur, l’application externe envoie le JWT contenant deux revendications personnalisées d’adhésion à un groupe : groupe ((https://tableau.com/groups) et noms de groupes (par exemple, « Group1 » et « Group2 ») dans lesquels inclure l’assertion de l’utilisateur. Tableau valide le JWT puis autorise l’accès aux groupes et au contenu dont les autorisations dépendent de ces groupes.

Pour plus d’informations, consultez Adhésion dynamique à un groupe à l’aide d’assertions.

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.

  • Vues intégrées sur plusieurs sites : dans Tableau Server 2023.1 et versions antérieures, le basculement entre les vues sur différents sites dans le même navigateur provoque une erreur 1008 : Impossible de récupérer le secret pour l’application de connexion. Pour contourner ce problème, effectuez une mise à niveau vers Tableau Server 2023.3 ou version ultérieure.
  • 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. ( Tableau Server 2024.2 supprimera la fonction Parlez aux aux données.)

  • 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.

Résolution des problèmes

Vous pouvez vous référer à la section Résoudre les problèmes des applications connectées - Approbation directe pour des informations sur les erreurs éventuellement associées à l’application connectée et sur les étapes de dépannage suggérées.

Merci de vos commentaires !Avis correctement envoyé. Merci