Configurer les applications connectées avec Direct Trust

Depuis Tableau Server 2022.1, les applications connectées à Tableau permettent 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 :

  • Les applications connectées sans interface utilisateur pour Tableau Server sont devenues disponibles dans la version 2021.4 de Tableau Server à l’aide des méthodes d’application connectée(Le lien s’ouvre dans une nouvelle fenêtre) avec l’API REST de Tableau.
  • Pour activer l’intégration par des applications connectées, Tableau Server doit être configuré pour utiliser SSL pour le trafic HTTP.
  • Pour que le jeton de session soit valide, les horloges de l’application externe et du serveur qui héberge 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 par un jeton d’authentification dans la norme JSON Web Token (JWT), qui 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 que 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égration des flux de travail uniquement) : vous pouvez spécifier une liste de domaines autorisés dans chaque application connectée. Le contenu Tableau intégré par le biais d’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égration des flux de travail uniquement) : vous pouvez spécifier quel contenu peut être intégré par le biais d’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é par le biais de l’application connectée. Si vous souhaitez spécifier plusieurs projets, vous devez utiliser l’API REST de Tableau.

Flux de travail de l’application connectée

Intégration des flux de travail

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 requête 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 la vérification de 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 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 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 Confiance 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 l’une des opérations suivantes :
    • Pour les flux de travail d’autorisation API REST (y compris les flux de travail qui utilisent l’API REST pour l’authentification), dans la zone de texte Nom de l’application connectée, saisissez 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 de domaines lors de la configuration d’une application connectée pour l’autorisation métadonnées API REST et API de métadonnées.

    • Pour l’intégration des flux de travail, 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 mesures 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 flux de travail 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 domaines comme bonne pratique de sécurité pour garantir que le contenu Tableau est intégré uniquement aux emplacements que vous autorisez.

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

  5. À côté du nom des applications connectées, 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 jeton JWT

Après avoir généré un secret, vous souhaitez permettre à votre application externe d’envoyer un jeton JWT valide. JWT est une norme utilisée pour transférer en toute sécurité des renseignements entre deux parties. Le JWT est signé par votre application externe pour envoyer en toute sécurité des renseignements à Tableau Server. 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 inclut les renseignements suivants :

  • 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 secretRequis (dans l’en-tête) L’identifiant de la clé secrète de l’application connectée.
    "iss"ÉmetteurRequis (dans l’en-tête) URI d’émetteur unique qui identifie l’application de connexion de confiance et sa clé de signature.
    "alg"AlgorithmeRequis (dans l’en-tête) Algorithme de signature JWT. Seul HS256 est pris en charge.
    "sub"ObjetNom d’utilisateur de l’utilisateur Tableau Server authentifié.
    "aud"PublicLa valeur doit être : "tableau".
    "exp"Heure d’expiration Pour être valide, un jeton JWT ne doit pas avoir expiré. Le délai d’expiration (en UTC) du jeton 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"Identifiant JWTObligatoire sous forme de revendication. La revendication d’ID JWT fournit un identifiant unique pour le jeton JWT et est sensible à la casse.
    "scp"

    Important : N’utilisez pas "scope ".

    ÉtenduePour l’intégration des flux de travail, les valeurs prises en charge incluent :

    « tableau:views:embed »
    "tableau:views:embed_authoring" Ajouté dans Tableau Server 2022.3
    "tableau:metrics:embed" (Retiré de 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 des utilisateurs 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 flux de travail uniquement) ci-dessous.

    Pour les flux de travail d’autorisations API REST , consultez Méthodes d’API REST prenant en charge l’autorisation JWT.

    Pour les flux de travail de l’API de métadonnées qui utilisent l’API REST pour l’authentification, la seule étendue prise en charge est tableau:content:read.

    https://tableau.com/groups Pour l’intégration des flux de travail uniquement.

    La valeur doit correspondre au nom d’un ou de plusieurs groupes dans Tableau Server. Pour plus d’informations, consultez la section Contrôle dynamique des membres de groupes (intégration des flux de travail uniquement) ci-dessous.

Exemples de jetons JWT

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

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

d’intégration des flux de travail

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

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 pour autoriser les témoins tiers.

Pour les flux de travail d’autorisations API REST

Une fois le jeton JWT configuré, vous devez ajouter le JWT valide à la demande de connexion API REST pour obtenir un accès autorisé. Pour plus d’informations, consultez la section Étendues d’accès des applications connectées.

Pour les flux de travail d’API de métadonnées

Une fois le jeton JWT configuré, vous devez ajouter le JWT valide à la demande de connexion API REST. Pour plus d’informations, consultez la section Étendues d’accès des 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 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 stratégies de sécurité de votre entreprise. Pour générer un secret supplémentaire, cliquez sur le nom de l’application connectée, puis cliquez 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 pas 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 à nouveau l’onglet Supprimer.

      Remarque : si le secret de l’application connectée est utilisé par une application externe, la vue ou la métrique intégrée ne peut pas s’afficher une fois le secret supprimé. Pour plus d’informations, consultez 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 vue ou la mesure intégrée ne peut pas s’afficher une fois l’application connectée désactivée. Pour plus d’informations, consultez 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 rendre le contenu intégré visible par votre utilisateur ou activer l’accès API REST par le biais d’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 jeton JWT utilise l’ID et la valeur de secret corrects.

Niveau d’accès (intégration des flux de travail uniquement)

Vous pouvez sélectionner l’un des deux types de projet lors de la configuration du niveau d’accès d’une application connectée. Le niveau d’accès contrôle le contenu pouvant ê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 projets multiples

À partir de Tableau Server 2024.2 , vous pouvez activer le contenu de plusieurs projets dans une application connectée en utilisant seulement l’API REST de Tableau. Pour préciser les projets que vous souhaitez activer, utilisez les « ID de projet » dans la méthode 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 des projets multiples sont configurés pour votre application connectée, Tableau affiche Projets multiples comme niveau d’accès de l’application connectée. Si vous sélectionnez soit Uniquement un projet ou Tous les projets et mettez à jour l’application connectée, l’option « Projets multiples » ne sera plus visible. Si vous devez à nouveau configurer l’application connectée pour des projets multiples, vous devez utiliser l’API REST.

Règles de liste d’autorisations de domaines (intégration de flux de travail 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 domaines comme bonne pratique de sécurité pour garantir que le contenu Tableau est 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 des domaines autorisés, vous pouvez saisir un ou plusieurs domaines en utilisant les 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 ports 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 gamme de domaineshttps:*myco.com:*Le contenu intégré est accessible en toute sécurité à partir de tous les ports de tous les sous-domaines de myco.com.
Aucun domaine[no domains]L’accès au contenu intégré est bloqué.

Contrôle dynamique des membres de groupes (intégration des flux de travail uniquement)

À compter de Tableau Serveur 2024.2, si des applications connectées sont configurées et le paramètre de la fonctionnalité est activé, vous pouvez contrôler dynamiquement les membres du groupe au moyen de revendications personnalisées incluses dans le JWT envoyé par l’application externe.

Une fois configuré, lors de l’authentification de l’utilisateur, l’application externe envoie le JWT qui contient deux revendications personnalisées des membres du groupe : le groupe ((https://tableau.com/groups) et des noms de groupe (par exemple, « Group1 » et « Group2 ») pour affirmer l’appartenance de l’utilisateur à ce groupe. Tableau valide le JWT et autorise ensuite l’accès aux groupes et au contenu dont les autorisations dépendent de ces groupes.

Pour plus d’informations, consultez Contrôle dynamique des membres de groupes à l’aide d’assertions.

Problèmes connus (intégration des flux de travail uniquement)

Il existe quelques problèmes connus à l’utilisation des 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 passage d’une vue à l’autre sur différents sites dans le même navigateur provoque l’erreur 1008 : Impossible de récupérer le secret de l’application connectée. Pour contourner ce problème, effectuez une mise à niveau vers Tableau Server 2023.3 ou vers une version ultérieure.
  • Objets Parlez aux données dans les tableaux de bord intégrés : les objets Parlez aux données dans les tableaux de bord intégrés ne se chargent pas. (En Ask Data sera retiré de Tableau Server 2024.2)

  • Métriques et listes d’autorisations de domaine : les vues de métriques intégrées s’afficheront 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. (En Tableau Serveur 2023.3, Tableau a retiré la possibilité d’intégrer des métriques.)

Résolution des problèmes

Vous pouvez consulter la section Résoudre les problèmes liés aux applications connectées - Confiance directe pour connaître les erreurs pouvant être associées à l’application connectée et les étapes de dépannage suggérées.

Merci de vos commentaires!Votre commentaire s été envoyé avec succès. Merci!