Konfigurera Tableau-anslutna program för att aktivera enkel inloggning för inbäddat innehåll

Från och med Tableau Server version 2022.1 har Tableau-anslutna program omärkbar och säker autentisering tack vare ett explicit förtroende mellan er Tableau Server-plats och externa program med inbäddat Tableau-innehåll. I Tableau Server 2022.3 har Tableau-anslutna program utökats med stöd för REST API-auktorisering. Och från och med Tableau Server 2023.3 respekteras REST API-auktorisering via anslutna program av metadata-API:et.

Anslutna program har följande fördelar:

  • De begränsar tillgången till innehåll som kan bäddas in och var det kan bäddas in.
  • Användarna kan komma åt inbäddat innehåll via enkel inloggning utan någon integrering med en identitetsleverantör (IdP).
  • Användarna kan autentisera direkt från det externa programmet
  • Auktorisera åtkomst till Tableau REST API (och metadata-API:et från och med Tableau Server 2023.3) programmatiskt för användarnas räkning med en JSON-webbtoken (JWT)

Obs!

  • Funktioner för anslutna program, utan användargränssnitt, för Tableau Server blev tillgängliga i Tableau Server version 2021.4 via de metoder för anslutna program(Länken öppnas i ett nytt fönster) som finns i Tableaus REST API.
  • För att aktivera inbäddning via anslutna program måste Tableau Server konfigureras för att använda SSL för HTTP-trafik.
  • För att sessionstoken ska vara giltig måste klockorna för det externa programmet och servern, som är värd för det externa programmet, ställas in till Koordinerad universell tid (UTC). Om någon av klockorna använder en annan standard kommer det anslutna programmet inte att vara betrott.
  • Tableau-anslutna program och Salesforce-anslutna program skiljer sig åt och har olika funktioner. Idag är Tableau-anslutna program optimerade för att bädda in vyer och mätvärden från Tableau i externa program. (I oktober 2023 tog Tableau bort möjligheten att bädda in mätvärden i Tableau Cloud och Tableau Server version 2023.3.)

Så här fungerar anslutna program

Förtroendet mellan er Tableau Server-plats och ert externa program upprättas och verifieras via en JSON-webbtoken, som använder en delad hemlighet från det Tableau-anslutna programmet och signeras av ert externa program.

Viktiga komponenter i anslutna program

Följande komponenter i ett anslutet program samverkar med JWT i ert externa program för att autentisera användare och visa inbäddat innehåll.

  • Hemligheter: Hemligheter är nycklar som delas av Tableau och ert externa program. De används i signaturer som utgör JWT. En hemlighet krävs när anslutna program används för att bädda in autentisering. Hemligheterna kan skapas i ett anslutet program, upphör inte att gälla och förblir giltiga tills de tas bort.
  • Lista med tillåtna domäner: Du kan ange en lista med tillåtna domäner i varje anslutet program. Tableau-innehåll som bäddats in via ett anslutet program tillåts bara i de angivna domänerna. På så sätt kan ni försäkra er om att innehållet visas på domäner som är skyddade och godkända av företaget.
  • Åtkomstnivå: Du kan ange vilket innehåll som kan bäddas in via ett anslutet program genom att koppla det anslutna programmet till ett eller alla projekt. Om du anger ett projekt kan bara innehållet i det valda projektet bäddas in via det anslutna programmet.

Arbetsflöde för anslutna program

I diagrammet nedan ser du hur autentiseringen mellan ert externa program (webbserver och webbsida) och det anslutna programmet fungerar.

  1. Användaren besöker webbsidan: När en användare besöker det inbäddade innehållet på en webbsida skickar sidan en GET-begäran till ert externa program för att hämta HTML-koden på den webbsidan.
  2. Det externa programmet konstruerar ett autentiseringstoken: Det externa programmet konstruerar en JWT, som innehåller en hemlighet från det anslutna programmet (steg 3 nedan innehåller ytterligare krav för JWT) och användaråtkomsten för det inbäddade innehållet. Hemligheten signeras av det externa programmet och används för att verifiera förtroendet i ett senare steg.
  3. Det externa programmet svarar med ett autentiseringstoken: Det externa programmet svarar webbsidan med JWT i URL:en för det inbäddade innehåll som anropas av webbsidan.
  4. Webbsidan begär innehåll från Tableau: När webbsidan försöker läsa in det inbäddade innehållet anropar sidan URL:en för det inbäddade innehållet, som då skickar en GET-begäran till Tableau.
  5. Tableau validerar token: Tableau tar emot JWT och verifierar förtroendet med det externa programmet genom att identifiera det anslutna programmet och den delade hemligheten som används i JWT. Tableau skapar sedan en session för användaren. Sessionen tar hänsyn till de inbäddningsomfattningar som anges i JWT liksom till de begränsningar som anges i det anslutna programmet, bland annat tillåtna domäner och projekt.
  6. Tableau returnerar innehållet baserat på det begränsade inbäddningssammanhanget: Det inbäddade innehållet läses bara in när sidan ingår i en tillåten domän och innehållet publiceras i ett tillåtet projekt (i förekommande fall). Den autentiserade användaren kan bara interagera med det inbäddade innehållet i den utsträckning som anges i JWT.

Skapa ett anslutet program

Steg 1: Skapa ett anslutet program

Skapa ett anslutet program från sidan Inställningar i Tableau Server.

  1. Logga in på Tableau Server som serveradministratör.

  2. Välj Inställningar > Anslutna program i den vänstra rutan och klicka sedan på knappen Nytt anslutet program.

  3. Gör något av följande i dialogrutan Skapa anslutet program:
    1. För REST API-auktoriseringsarbetsflöden (inklusive de av metadata-API:ets arbetsflöden som använder REST API för autentisering) anger du ett namn för det anslutna programmet i textrutan Namn på anslutet program och klickar på knappen Skapa.

      Obs! Du kan ignorera Åtkomstnivå och Lista med tillåtna domäner när du konfigurerar ett anslutet program för auktorisering via REST API och metadata-API.

    2. Gör följande för att bädda in arbetsflöden:

      1. Skriv ett namn för det anslutna programmet i textrutan Namn på anslutet program.

      2. Välj Alla projekt eller Endast ett projekt på listrutemenyn Gäller för att styra vilka vyer eller mätvärden som kan bäddas in. Om du väljer alternativet ”Endast ett projekt” väljer du det projekt omfattningen ska gälla. Mer information om de här båda alternativen finns i Åtkomstnivå (endast inbäddningsarbetsflöden).

        Obs!

      3. I listan med tillåtna domäner anger du domäner med de regler som beskrivs i Domänformatering nedan för att styra var vyer eller mätvärden kan bäddas in.

      4. När du är klar klickar du på knappen Skapa.

  4. Klicka på åtgärdsmenyn bredvid det anslutna programmets namn och välj Aktivera. Av säkerhetsskäl är anslutna program som standard inaktiverade när de skapas.

  5. Anteckna det anslutna programmets ID, som också kallas klient-ID, eftersom du ska använda det i steg 3 nedan.

Steg 2: Generera en hemlighet

Du kan generera totalt två hemligheter för varje anslutet program. Den andra hemligheten kan användas för att rotera hemligheten och ge ett extra skydd om en hemlighet skulle avslöjas.

  1. På detaljsidan för det anslutna program du skapade i steg 1 klickar du på knappen Generera ny hemlighet.

  2. Anteckna hemlighetens ID och värde, som ska användas i steg 3 nedan.

Steg 3: Konfigurera en JWT

När du har genererat en hemlighet vill du göra det möjligt för ert externa program att skicka en giltig JWT. JWT är en standard som används för att överföra information på ett säkert sätt mellan två parter. En JWT signeras av ert externa program för att på ett säkert sätt skicka information till Tableau Server. JWT hänvisar till det anslutna programmet, den användare som sessionen genereras för och den åtkomstnivå användaren ska ha.

En giltig JWT inkluderar följande information:

  • ID för det anslutna programmet, kallas även klient-ID, från steg 1.
  • Hemlighetens ID och värde som genererades i steg 2.

  • Registrerat anspråk och sidhuvud:

    AnspråkNamnBeskrivning eller obligatoriskt värde
    "kid"Hemligt IDObligatoriskt (i rubriken). Det anslutna programmets hemliga ID.
    "iss"UtgivareObligatoriskt (i rubriken). Unik utfärdar-URI som identifierar det betrodda anslutna programmet och dess signeringsnyckel.
    "alg"AlgoritmObligatoriskt (i rubriken). JWT-signeringsalgoritm. Endast HS256 stöds.
    "sub"ÄmneAnvändarnamnet för den autentiserade Tableau Server-användaren.
    "aud"MålgruppVärdet måste vara: "tableau".
    "exp"Utgångstid

    En giltig JWT får inte löpa ut. Förfallotiden för JWT måste ligga inom den konfigurerade längsta giltighetstiden. Den maximala giltighetstiden kan konfigureras med tsm-kommandot vizportal.oauth.connected_apps.max_expiration_period_in_minutes.

    "jti"JWT-IDKrävs som anspråk. Genom ID-anspråket får JWT en skiftlägeskänslig, unik identifierare.
    "scp"

    Viktigt: Använd inte "scope ".

    OmfattningFör inbäddning av arbetsflöden inkluderar de värden som stöds:

    tableau:views:embed
    tableau:views:embed_authoring” (Tillagt i Tableau Server 2022.3)
    tableau:metrics:embed” (Utfasat i Tableau Server 2023.3)
    tableau:ask_data:embed” (tillagt i Tableau Server version 2023.1)

    Obs!

    • Värdena måste skickas som en listtyp.
    • För tableau:views:embed tar omfattningen hänsyn till de användarbehörigheter som redan har konfigurerats i Tableau Server och ger användarna möjlighet att interagera med verktygen i den inbäddade vyn om de är tillgängliga i den ursprungliga vyn.
    • Vi rekommenderar att verktygsfältsparametern utelämnas i den inbäddade koden. Mer information finns i avsnittet Kända problem (endast inbäddningsarbetsflöden) nedan.

    För REST API-auktoriseringsarbetsflöden läser du REST API-metoder som stöder JWT-auktorisering.

    För de av metadata-API:ets arbetsflöden som använder REST API för autentisering är den enda omfattning som stöds tableau:content:read.

Exempel på JWT

Det här är några exempel på JWT i både Java och Python. Java- och Python-exemplen använder nimbus-jose-jwt-biblioteket respektive PyJWT-biblioteket.

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
        }
  )

När du har konfigurerat JWT och koden körs av det externa programmet genereras en token.

Steg 4: Nästa steg

För inbäddningsarbetsflöden

När JWT har konfigurerats måste du lägga till inbäddningskod i det externa programmet. Se till att du inkluderar den giltiga JWT som du konfigurerade i steg 3 ovan i den webbkomponent som det externa programmet anropar.

Mer information om hur du bäddar in Tableau-innehåll finns i följande avsnitt:

Obs! För att användarna ska kunna autentiseras när de öppnar inbäddat innehåll måste webbläsarna vara konfigurerade att tillåta kakor från tredje part.

För REST API-auktoriseringsarbetsflöden

När JSON-webbtoken har konfigurerats måste du lägga till den giltiga JSON-webbtoken i REST API-inloggningsbegäran för auktoriserad åtkomst. Mer information finns i Åtkomstomfång för anslutna program.

För metadata-API:ets arbetsflöden

När JSON-webbtoken har konfigurerats måste du lägga till den giltiga JSON-webbtoken i REST API-inloggningsbegäran. Mer information finns i Åtkomstomfång för anslutna program.

Hantera ett anslutet program

På sidan Anslutna program hanterar du alla anslutna program för en plats. Du kan skapa, ta bort och inaktivera anslutna program samt återkalla eller generera nya hemligheter om de befintliga har avslöjats.

  1. Logga in på Tableau Server som server- eller platsadministratör.

  2. Välj Inställningar > Anslutna program i den vänstra rutan.

  3. Markera kryssrutan bredvid det anslutna program du vill hantera och gör en eller flera av följande saker:

    • Generera en ny hemlighet i enlighet med den rotationstid som anges i organisationens säkerhetspolicyer. Om du vill generera ytterligare en hemlighet klickar du på det anslutna programmets namn och sedan på knappen Generera ny hemlighet. Ett anslutet program får ha högst två hemligheter. Båda hemligheterna kan vara aktiva samtidigt, upphör inte att gälla och förblir giltiga tills de tas bort.

    • Granska uppgifterna om det anslutna programmet genom att klicka på dess namn och visa när det skapades, dess ID, dess projekt- och domänomfattning samt dess hemligheter.

    • Ändra projekt- eller domänomfattning genom att välja Redigera på menyn Åtgärder. Gör önskade ändringar och klicka på Uppdatera.

      Obs! Om du ändrar projekt- eller domänomfattningen och det inbäddade innehållet inte finns i det nya projektet eller den nya domänen kan den inbäddade vyn eller det inbäddade mätvärdet inte visas, och användarna ser ett felmeddelande när de försöker komma åt det inbäddade innehållet.

    • Ta bort en hemlighet genom att klicka på det anslutna programmets namn. Klicka på Åtgärder bredvid hemligheten på det anslutna programmets sida och välj Ta bort. Klicka på Ta bort igen i bekräftelsedialogrutan.

      Obs! Om det anslutna programmets hemlighet används av ett externt program kan den inbäddade vyn eller det inbäddade mätvärdet inte visas när hemligheten har tagits bort. Mer information finns i avsnittet nedan, Vad händer om ett anslutet program inaktiveras eller tas bort eller om dess hemlighet tas bort?.

    • Inaktivera ett anslutet program genom att välja Inaktivera på menyn Åtgärder. Om det anslutna programmet används av ett externt program kan den inbäddade vyn eller det inbäddade mätvärdet inte visas när det anslutna programmet inaktiveras. Mer information finns i avsnittet nedan, Vad händer om ett anslutet program inaktiveras eller tas bort eller om dess hemlighet tas bort?.

Vad händer om ett anslutet program inaktiveras eller tas bort eller om dess hemlighet tas bort?

För att visa en inbäddad vy eller ett inbäddat mätvärde för användarna via ett anslutet program måste det anslutna programmet vara aktiverat och hemligheten måste ha genererats. Om det anslutna programmet används i det externa programmet och det antingen inaktiveras eller tas bort, eller om dess hemlighet tas bort eller ersätts, får användarna ett felmeddelande när de försöker komma åt det inbäddade innehållet.

Undvik det här problemet genom att se till att det anslutna programmet är aktiverat och att JWT använder rätt ID och värde för hemligheten.

Åtkomstnivå (endast inbäddningsarbetsflöden)

Du kan välja en av två projekttyper när du konfigurerar åtkomstnivån för ett anslutet program. Åtkomstnivån styr vilket innehåll som kan bäddas in.

  • Alla projekt: Med det här alternativet kan innehåll i alla projekt bäddas in.
  • Endast ett projekt: Med det här alternativet kan bara innehåll i det angivna projektet bäddas in. Om det angivna projektet innehåller kapslade projekt går det inte att bädda in innehåll i dessa kapslade projekt.

Regler för listan med tillåtna domäner (endast inbäddningsarbetsflöden)

Med det anslutna programmets lista med tillåtna domäner kan du begränsa åtkomsten till inbäddat Tableau-innehåll till alla domäner eller vissa domäner eller utesluta vissa domäner eller blockera alla domäner.

Domänalternativ

Du kan välja ett av två alternativ när du konfigurerar listan över tillåtna domäner för ett anslutet program:

  • Alla domäner: Detta är standardalternativet och ger obegränsad tillgång till det inbäddade innehållet.
  • Endast angivna domäner: Med det här alternativet kan du begränsa tillgången till det inbäddade innehållet. Om du använder det här alternativet följer du de formateringsregler som anges i nästa avsnitt, Domänformatering.

Domänformatering

I rutan för tillåtna domäner kan du ange en eller flera domäner enligt formateringsexemplen nedan.

Obs! Reglerna för domänformatering gäller även när du använder metoderna för anslutna program(Länken öppnas i ett nytt fönster) i Tableaus REST API.

Här följer några formateringsexempel som bygger på vanliga scenarier:

Om du vill ange följandeExempelInbäddningsåtkomst
Omfång med domäner*.myco.comDet inbäddade innehållet är tillgängligt från alla underdomäner under myco.com.
Alla portarmyco.com:*Det inbäddade innehållet är tillgängligt från alla portar i myco.com.
Specifik portmyco.com:8080Det inbäddade innehållet är bara tillgängligt från port 8080 i myco.com.
Flera diskreta domänermyco.com
events.myco.com
ops.myco.com

Det inbäddade innehållet är tillgängligt från alla tre domäner.

Obs! När du anger flera domäner skriver du varje domän på en ny rad eller skiljer domänerna åt med ett mellanslag. För REST API måste domänerna skiljas åt med ett mellanslag.

Endast säker trafikhttps:Det inbäddade innehållet kan användas på ett säkert sätt oavsett domän.
Säker trafik till alla portar för en rad domänerhttps:*myco.com:*Det inbäddade innehållet kan användas på ett säkert sätt från alla portar på alla underdomäner i myco.com.
Inga domäner[inga domäner]Tillgången till det inbäddade innehållet är spärrad.

Kända problem (endast inbäddningsarbetsflöden)

Det finns ett par kända problem när man använder anslutna appar som kommer att åtgärdas i en framtida version.

  • Funktioner i verktygsfältet: När inbäddat innehåll har parametern för verktygsfältet definierad, fungerar inte alla funktioner i verktygsfältet. För att kringgå det här problemet rekommenderar vi att du döljer verktygsfältsparametern såsom i exemplet nedan.

    <tableau-viz id='tab-viz' src='https://<your_server>/t/<your_site>/...'
    	toolbar='hidden'>
    </tableau-viz>

  • Publicerade datakällor: Publicerade datakällor som är inställda på Fråga användare om inloggningsuppgifter för databasen, visas inte. För att kringgå det här problemet rekommenderar vi, om möjligt, att datakällans ägare istället bäddar in inloggningsuppgifterna för databasen.
  • Fråga Data-objekt på inbäddade instrumentpaneler: Fråga data-objekt på inbäddade instrumentpaneler läses inte in. (I Tableau Server 2024.2 kommer inte att använda Fråga data.)

  • Mätvärden och listor med tillåtna domäner: Inbäddade mätvärdesvyer visas trots åtkomstbegränsningar som eventuellt angetts i de anslutna programmens listor med tillåtna domäner. Obs! Mätvärdesdata som nås från verktygsfält i inbäddade vyer fungerar som väntat. (I Tableau Server 2023.3 fasade Tableau ut möjligheten att bädda in mätvärden.)

Tack för din feedback!Din feedback har skickats in. Tack!