Configurer les applications connectées à Tableau de manière à activer l’authentification unique pour le contenu intégré intégré

Depuis la version 2022.1 de Tableau Server, 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 dans lesquelles le contenu Tableau est intégré. Dans Tableau Server la version 2022.3, les applications connectées à Tableau ont étendu leurs capacités pour prendre en charge l’autorisation API REST. Et à partir de la version Tableau Server 2023.3, l’autorisation API REST via les applications connectées est respectée par l’API de métadonnées.

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)
  • Offrir 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 de métadonnées Tableau à partir de la version Tableau Server2023.3) au nom des utilisateurs à l’aide d’un jeton JSON Web Token (JWT)

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

Flux de travail 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 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, 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 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.

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

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

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

  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 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’ID secret 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

    Un JWT valide ne doit pas avoir expiré. Le délai d’expiration 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 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 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.

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 É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 É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 ou de site, 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 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 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 afficher une vue ou une métrique intégrée à votre utilisateur par le biais d’une application connectée, l’application connectée doit être activée et un secret généré. Si l’application de connexion 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 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 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.

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.

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 Connected 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é.

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.
  • 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 supprimé 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 supprimé la possibilité d’intégrer des métriques.)

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