Configurer les applications connectées avec la confiance OAuth 2.0

En tant qu’administrateur Tableau Server, vous pouvez enregistrer un ou plusieurs serveurs d’autorisation externes (EAS) pour établir une relation de confiance entre votre Tableau Server et l’EAS en utilisant le protocole de la norme OAuth 2.0.

Important :

  • certaines des procédures décrites dans cette rubrique nécessitent une configuration avec des logiciels et des services tiers. Nous avons tout mis en œuvre pour vérifier les procédures permettant d’activer la fonctionnalité EAS sur Tableau Server. Cependant, les logiciels et services tiers peuvent changer ou votre entreprise peut être différente. En cas de problèmes, veuillez vous référer à la documentation du fournisseur tiers pour obtenir de l’aide et connaître les détails de configuration qui font autorité.
  • Pour activer l’intégration via EAS, 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.

Fonctionnement des applications connectées Tableau avec la confiance OAuth 2.0

La relation de confiance entre votre site Tableau Server et l’application externe est établie et vérifiée via un jeton d’authentification conforme à la norme JSON Web Token (JWT).

Lorsque le contenu Tableau intégré est chargé dans votre application externe, un flux de code d’autorisation OAuth est utilisé. Après s’être correctement authentifiés auprès de leur IdP, les utilisateurs sont automatiquement authentifiés auprès de Tableau Server. Suivez les étapes décrites ci-dessous pour enregistrer votre EAS auprès de Tableau Server .

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

  • Serveur d’autorisation externe (EAS) : le serveur, généralement votre IdP, qui fonctionne comme interface entre l’utilisateur et l’application externe. Le serveur authentifie et autorise l’accès des utilisateurs au contenu protégé de Tableau.

  • URL de l’émetteur : l’URL qui identifie de manière unique l’instance EAS.

Workflow de l’application connectée

Intégration des workflows

Le schéma ci-dessous illustre le fonctionnement de l’authentification entre le serveur d’autorisation externe (EAS), l’application externe (serveur Web et page Web) et l’application connectée à Tableau.

  1. L’utilisateur visite la page Web : lorsqu’un utilisateur consulte le contenu intégré sur une page Web, la page Web envoie une demande GET à l’application externe.

  2. L’application externe redirige la demande vers EAS : l’application externe répond avec une page Web qui redirige vers le serveur d’autorisation externe (EAS).

  3. L’utilisateur s’authentifie auprès d’EAS : l’utilisateur s’authentifie et demande une autorisation auprès d’EAS.

  4. EAS répond à la page Web avec le code d’autorisation : L’EAS répond à la page avec un code d’autorisation et redirige vers la page Web.

  5. EAS convertit le code d’autorisation en JWT : la page Web appelle l’EAS pour convertir le code d’autorisation en un JWT, que la page Web place dans l’URL du contenu intégré.

  6. La page Web demande un contenu à Tableau : la page Web charge l’iFrame et envoie une requête GET à Tableau.

  7. Tableau valide le jeton : Tableau valide le JWT dans l’URL avec la signature et répond avec le contenu et respecte les portées d’intégration définies dans le JWT.

Créer une application connectée

Étape 1 : Avant de commencer

Pour enregistrer un EAS avec Tableau Server, vous devez avoir déjà configuré un EAS. En outre, l’EAS doit envoyer un jeton Web JSON (JWT) valide contenant les revendications enregistrées et l’en-tête figurant dans le tableau ci-dessous.

RevendicationNomDescription ou valeur requise
"kid"ID de cléObligatoire (dans l’en-tête). Un identifiant de clé unique du fournisseur d’identité.
"iss"ÉmetteurObligatoire (dans l’en-tête ou en tant que revendication). 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. Les noms des algorithmes pris en charge sont répertoriés dans la page Class JWSAlgorithm(Le lien s’ouvre dans une nouvelle fenêtre) de la documentation javadoc.io. L’algorithme de signature peut être configuré à l’aide de la commande vizportal.oauth.external_authorization_server.blocklisted_jws_algorithms.
"sub"SujetNom d’utilisateur de l’utilisateur Tableau Server authentifié.
"aud"Public

La valeur doit être : "tableau"

"exp"Date d’expirationPour ê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 vizportal.oauth.external_authorization_server.max_expiration_period_in_minutes.
"jti"ID JWTLa demande d’ID JWT fournit un identifiant unique pour le jeton JWT et est sensible à la casse.
"scp"Portée

Pour 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. Sera supprimé dans Tableau Server 2024.2)

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.

https://tableau.com/groupsAdhésion dynamique à un groupePour 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.

Remarque : les revendications JWT ci-dessus sont documentées dans la section Noms de revendications enregistrés(Le lien s’ouvre dans une nouvelle fenêtre) dans la documentation distribuée par l’organisation Internet Engineering Task Force (IETF).

Étape 2 : enregistrer votre EAS avec Tableau Server

En enregistrant votre EAS auprès de Tableau Server, vous établissez une relation de confiance entre l’EAS et site Tableau Server. Cela signifie que lorsque les utilisateurs accèdent au contenu Tableau intégré dans votre application externe, ils sont redirigés pour s’authentifier auprès de l’IdP. L’EAS génère le jeton d’authentification, qui est transmis à Tableau Server pour vérification. Une fois la relation de confiance vérifiée, l’accès au contenu intégré est accordé aux utilisateurs.

Remarque : certains EAS prennent en charge l’option d’afficher une boîte de dialogue de consentement qui demande l’approbation des utilisateurs pour que l’application accède au contenu Tableau. Pour garantir la meilleure expérience à vos utilisateurs, nous vous recommandons de configurer votre EAS pour qu’il consente automatiquement à la demande d’application externe au nom des utilisateurs.

À propos d’EAS au niveau du site

Depuis Tableau Server 2024.2, vous pouvez configurer l’EAS au niveau du site. Pour enregistrer un EAS au niveau du site, les applications connectées doivent être activées dans Tableau Server Manager (TSM).

Il existe deux manières d’enregistrer un EAS à l’échelle du serveur : à l’aide de l’interface utilisateur Web de TSM ou à l’aide de l’interface en ligne de commande de TSM.

Après l’enregistrement de l’EAS, la relation de confiance établie s’applique à tous les sites sur Tableau Server.

Option 1 : Utiliser l’interface utilisateur Web de TSM

  1. En tant qu’administrateur Tableau Server, connectez-vous à l’interface utilisateur Web Tableau Services Manager (TSM). Pour plus d’informations, consultez Se connecter à l’interface utilisateur Web Tableau Services Manager.

  2. Effectuez l’une des actions suivantes :

    • Dans Tableau Server 2024.2 et versions ultérieures, accédez à la page Identité et accès utilisateur > onglet Applications connectées.

    • Dans Tableau Server 2023.3 et versions antérieures, accédez à la page Identité et accès utilisateur > onglet Serveur d’autorisation.

  3. Effectuez l’une des actions suivantes :
    • Dans Tableau Server 2024.2 et versions ultérieures :

      1. Cochez la case Activer les applications connectées.

      2. Sélectionnez la seconde case d’option Autoriser les applications connectées (configurer au niveau du site) et la confiance OAuth 2.0 à l’échelle du serveur (configurer ci-dessous).

      3. Dans la zone de texte URL de l’émetteur, collez l’URL de l’émetteur de l’EAS.

      4. Cliquez sur le bouton Enregistrer les modifications en attente.

    • Dans Tableau Server 2023.3 et versions antérieures :

      1. Sélectionnez Activer l’accès OAuth pour le contenu intégré.

      2. Dans la zone de texte URL de l’émetteur, collez l’URL de l’émetteur de l’EAS.

      3. Cliquez sur le bouton Enregistrer les modifications en attente.

  4. Une fois que vous avez terminé, procédez comme suit :
    1. Dans le coin supérieur droit de la page, cliquez sur le bouton Modifications en attente.

    2. Dans le coin inférieur droit de la page, cliquez sur le bouton Appliquer les modifications et redémarrer pour arrêter et redémarrer Tableau Server.

Option 2 : Utiliser l’interface en ligne de commande de TSM

  1. Ouvrez une invite de commande en tant qu’administrateur sur le nœud initial (le nœud sur lequel TSM est installé) du cluster.
  2. Exécutez les commandes suivantes :

    tsm configuration set -k vizportal.oauth.external_authorization.enabled -v true
    tsm configuration set -k vizportal.oauth.external_authorization_server.issuer -v "<issuer_url_of_EAS>"
    tsm restart

Depuis Tableau Server 2024.2, vous pouvez enregistrer un ou plusieurs EAS pour un site. Une fois que vous avez enregistré un EAS au niveau du site, la relation de confiance établie s’applique uniquement au site.

Remarque : une condition préalable à la configuration d’un EAS au niveau du site est que les applications connectées soient activées dans TSM.

Étape 1 : Activer les applications connectées

  1. En tant qu’administrateur Tableau Server, connectez-vous à l’interface utilisateur Web Tableau Services Manager (TSM). Pour plus d’informations, consultez Se connecter à l’interface utilisateur Web Tableau Services Manager.

  2. Accédez à la page Identité et accès de l’utilisateur > onglet Applications connectées.

  3. Cochez la case Activer les applications connectées.

  4. Effectuez l’une des actions suivantes :

    • Sélectionnez la première case d’option Autoriser les applications connectées (configurer au niveau du site) pour permettre l’enregistrement d’un EAS au niveau du site uniquement.

    • (Par défaut) Sélectionnez la seconde case d’option Autoriser les applications connectées (configurer au niveau du site) et la confiance OAuth 2.0 à l’échelle du serveur (configurer ci-dessous) pour permettre l’enregistrement d’un EAS au niveau du site et à l’échelle du serveur. Si vous choisissez cette option, assurez-vous que l’URL de l’émetteur spécifiée au niveau du site est différente de l’URL de l’émetteur à l’échelle du serveur.

  5. Cliquez sur le bouton Enregistrer les modifications en attente.

  6. Une fois que vous avez terminé, procédez comme suit :
    1. Dans le coin supérieur droit de la page, cliquez sur le bouton Modifications en attente.

    2. Dans le coin inférieur droit de la page, cliquez sur le bouton Appliquer les modifications et redémarrer pour arrêter et redémarrer Tableau Server.

Étape 2 : Enregistrer l’EAS

  1. En tant qu’administrateur Tableau Server, 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 OAuth 2.0 Trust.

  4. Dans la boîte de dialogue Créer une application connectée, suivez la procédure ci-dessous :
    1. Dans la zone de texte Nom, saisissez un nom pour l’application connectée.

    2. Dans la zone de texte URL de l’émetteur, collez l’URL de l’émetteur de l’EAS.

    3. Sélectionnez l’option Activer l’application connectée. Pour des raisons de sécurité, une application connectée est désactivée par défaut lors de sa création.

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

  5. Une fois l’application connectée créée, copiez l’ID de site de l’application connectée. L’ID de site est utilisé pour la revendication "aud" (Audience) du JWT décrite à l’étape 1 ci-dessus.

Étape 3 : Étapes suivantes

Pour intégrer des workflows

Après avoir configuré Tableau Server de manière à utiliser votre EAS, vous devez ajouter le code d’intégration à votre application externe. Assurez-vous d’inclure le jeton JWT valide généré par votre EAS, comme décrit à l’Étape 1, 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.

Contrôler où le contenu peut être intégré à l’aide de la liste de domaines autorisés pour l’intégration

Depuis Tableau Server 2023.3, vous-même et vos utilisateurs pouvez contrôler si le contenu Tableau peut être intégré sans restriction ou limité à certains domaines à l’aide de la méthode Mettre à jour les paramètres d’intégration pour le site dans l’API REST de Tableau.

Par défaut, le paramètre de site unrestrictedEmbedding pour l’intégration est défini sur true pour permettre une intégration sans restriction. Sinon, vous pouvez également définir le paramètre sur false et spécifie les domaines dans lesquels le contenu Tableau des applications externes peut être intégré à l’aide du paramètre allowList.

Pour plus d’informations, consultez l’un des articles suivants :

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

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.

Résolution des problèmes

Si le contenu intégré ne s’affiche pas dans votre application personnalisée ou que l’autorisation de l’API REST de Tableau échoue, vous pouvez utiliser les outils de développement d’un navigateur pour inspecter et identifier les codes d’erreur associés à la fonctionnalité EAS activée sur Tableau Server.

Reportez-vous au tableau ci-dessous pour consulter la description du code d’erreur et la résolution potentielle.

Code d’erreurRésuméDescriptionRésolution ou explication potentielle
5SYSTEM_USER_NOT_FOUNDL’utilisateur de Tableau est introuvable
Pour résoudre ce problème, vérifiez que la valeur de la revendication 'sub' (sujet) dans le JWT est "username" pour l’instance Tableau Server authentifiée. Cette valeur est sensible à la casse.
16LOGIN_FAILEDÉchec de la connexionCette erreur est généralement causée par l’un des problèmes de réclamation suivants dans le JWT :
67FEATURE_NOT_ENABLEDL’accès à la demande n’est pas pris en chargeL’accès à la demande est disponible uniquement via les sites Tableau Cloud sous licence.
10081COULD_NOT_RETRIEVE_IDP_METADATAPoint de terminaison de métadonnées EAS manquantPour résoudre ce problème, vérifiez que l’EAS est configuré correctement et que l’émetteur approprié est appelé.
10082AUTHORIZATION_SERVER_ISSUER_NOT_SPECIFIEDÉmetteur manquantPour résoudre ce problème, vérifiez que l’émetteur approprié est appelé. Pour modifier l’URL de l’émetteur, vous pouvez utiliser la commande vizportal.oauth.external_authorization_server.issuer.
10083BAD_JWTL’en-tête JWT contient des problèmesIl manque les revendications 'kid' (ID du secret) ou 'clientId' (émetteur) dans l’en-tête JWT. Pour résoudre ce problème, assurez-vous que ces informations sont incluses.
10084JWT_PARSE_ERRORJWT contient des problèmesPour résoudre le problème, vérifiez les points suivants :
  • La valeur 'aud' (audience) référencée dans le jeton JWT utilise la valeur "tableau". Cette valeur est sensible à la casse.
  • Les valeurs 'aud' (audience) et 'sub' (sujet) sont incluses dans le jeton JWT.
10085COULD_NOT_FETCH_JWT_KEYSJWT n’a pas pu trouver les clésImpossible de trouver le secret.

Pour résoudre ce problème, vérifiez que l’émetteur approprié est appelé. Pour modifier l’URL de l’émetteur, vous pouvez utiliser la commande vizportal.oauth.external_authorization_server.issuer.

10087BLOCKLISTED_JWS_ALGORITHM_USED_TO_SIGNProblème avec l’algorithme de signature JWTPour résoudre le problème, vous pouvez supprimer l’algorithme de signature. Consultez vizportal.oauth.external_authorization_server.blocklisted_jws_algorithms pour plus d’informations.
10088RSA_KEY_SIZE_INVALIDProblème avec les exigences de signature JWTPour résoudre ce problème, vérifiez auprès de l’EAS ou de l’IdP que le JWT est signé avec une taille de clé RSA de 2048.
10091JTI_ALREADY_USEDJWT unique requisLe JWT a déjà été utilisé dans le processus d’authentification. Pour résoudre ce problème, l’EAS ou l’IdP doit générer un nouveau JWT.
10092NOT_IN_DOMAIN_ALLOW_LISTLe domaine du contenu intégré n’est pas spécifiéPour résoudre ce problème, assurez-vous que le paramètre unrestrictedEmbedding est défini sur true ou que le paramètre domainAllowlist inclut les domaines dans lesquels le contenu Tableau est intégré à l’aide de la méthode Mettre à jour les paramètres d’intégration pour le site(Le lien s’ouvre dans une nouvelle fenêtre) dans l’API REST de Tableau.
10094MISSING_REQUIRED_JTIID JWT manquantPour résoudre ce problème, vérifiez que 'jti’ (ID JWT) est inclus dans le jeton JWT.
10096JWT_EXPIRATION_EXCEEDS_CONFIGURED_EXPIRATION_PERIOD La valeur 'exp' (délai d’expiration) excède la période de validité maximum par défaut. Pour résoudre ce problème, examinez les revendications enregistrées(Le lien s’ouvre dans une nouvelle fenêtre) requises pour un JWT valide et assurez-vous que la valeur correcte est utilisée. Pour modifier la période de validité maximale, vous pouvez utiliser la commande vizportal.oauth.external_authorization_server.max_expiration_period_in_minutes.
10097SCOPES_MALFORMEDProblèmes avec la revendication d’étendueCette erreur peut se produire lorsque la revendication 'scp' (étendue) est manquante dans le jeton JWT ou n’est pas transmise en tant que type de liste. Pour résoudre ce problème, vérifiez que 'scp' est inclus dans le jeton JWT et transmis en tant que type de liste. Pour obtenir de l’aide sur le dépannage d’un jeton JWT, consultez Débogueur(Le lien s’ouvre dans une nouvelle fenêtre) sur le site auth0.
10098JWT_UNSIGNED_OR_ENCRYPTEDLe jeton JWT n’est ni signé ni chiffréTableau ne prend pas en charge les jetons JWT non signés ou chiffrés.
10099SCOPES_MISSING_IN_JWTRéclamation relative aux étendues manquantesLe JWT ne contient pas la réclamation 'scp' (étendue) requise. Pour résoudre ce problème, vérifiez que 'scp' est inclus dans le jeton JWT. Pour obtenir de l’aide sur le dépannage d’un jeton JWT, consultez Débogueur(Le lien s’ouvre dans une nouvelle fenêtre) sur le site auth0.
10100JTI_PERSISTENCE_FAILEDErreur d’ID JWT inattendueUne erreur inattendue s’est produite avec 'jti' (ID JWT). Pour résoudre ce problème, un nouveau JWT avec un nouveau 'jti' doit être généré.
10103JWT_MAX_SIZE_EXCEEDEDJWT dépasse la taille maximaleCette erreur peut se produire lorsque la taille du JWT dépasse 8 000 octets. Pour résoudre ce problème, assurez-vous que seules les revendications nécessaires sont transmises à Tableau Server.
Merci de vos commentaires !Avis correctement envoyé. Merci