Enregistrer EAS pour activer SSO pour le contenu intégré

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

  • Fournir à vos utilisateurs une expérience d’authentification unique (SSO) pour le contenu Tableau intégré dans vos applications externes via le fournisseur d’identité (IdP) que vous avez déjà configuré pour Tableau Server
  • Autoriser par programme l’accès à l’API REST de Tableau (et l’API Metadata depuis Tableau Server d’octobre 2023) pour le compte des utilisateurs à l’aide d’un jeton Web JSON (JWT)

Lorsque le contenu Tableau intégré est chargé dans votre application externe, un flux OAuth standard 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.

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.

É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"Audience

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.

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

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

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.

  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 à Identité et accès utilisateur > Serveur d’autorisation, puis procédez comme suit :
    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.

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

  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

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

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.

Résolution des problèmes

Lorsque le contenu intégré ne s’affiche pas dans votre application personnalisée ou l’API REST de Tableau, 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