Verbonden apps configureren met directe vertrouwensrelatie

Vanaf Tableau Server versie 2022.1 maken met Tableau verbonden apps een naadloze en veilige verificatie-ervaring mogelijk door een expliciete vertrouwensrelatie tussen uw Tableau Server-site en externe toepassingen.

Opmerkingen:

  • De functionaliteit van verbonden apps zonder UI voor Tableau Server is beschikbaar gekomen in Tableau Server versie 2021.4 via de Verbonden app-methoden(Link wordt in een nieuw venster geopend) in de Tableau REST-API.
  • Om insluiting via verbonden apps mogelijk te maken moet Tableau Server worden geconfigureerd voor het gebruik van SSL voor HTTP-verkeer.
  • Wil een sessietoken geldig zijn, dan moeten de klokken van de externe toepassing en de server die de externe toepassing host, zijn ingesteld op Coordinated Universal Time (UTC). Als een van beide klokken een andere standaard gebruikt, wordt de verbonden app niet vertrouwd.

Hoe verbonden apps werken

De vertrouwensrelatie tussen uw Tableau Server-site en de externe toepassing worden tot stand gebracht en geverifieerd via een verificatietoken in de JSON Web Token (JWT)-standaard, die gebruikmaakt van een gedeeld geheim dat wordt verstrekt door de met Tableau verbonden app en is ondertekend door uw externe toepassing.

Belangrijke onderdelen van een verbonden app

De volgende onderdelen van verbonden apps werken samen met de JWT in uw externe toepassing om gebruikers te verifiëren en ingesloten inhoud weer te geven.

  • Geheimen: geheimen zijn sleutels die worden gedeeld door Tableau en uw externe toepassing. Ze worden gebruikt in handtekeningen die de JWT vormen. Een geheim is vereist als u verbonden apps gebruikt voor het insluiten van verificatie of REST API-autorisatie. Geheimen kunnen in een verbonden app worden gemaakt, ze verlopen niet en blijven geldig totdat ze worden verwijderd.
  • Toelatingslijst van domeinen (alleen voor het insluiten van workflows): u kunt in elke verbonden app een lijst met geaccepteerde domeinen opgeven. Tableau-inhoud die is ingesloten via een verbonden app, wordt alleen onder de opgegeven domeinen geaccepteerd. Hierdoor wordt inhoud weergegeven onder de domeinen die door uw bedrijf zijn beveiligd en goedgekeurd.
  • Toegangsniveau (alleen workflows insluiten): door een verbonden app aan één project of aan alle projecten te koppelen kunt u opgeven welke inhoud via een verbonden app kan worden ingesloten. Als u één project opgeeft, kan alleen de inhoud van het geselecteerde project via de verbonden app worden ingesloten. Als u meerdere projecten wilt opgeven, moet u de Tableau REST API gebruiken.

Workflow van verbonden app

Workflows insluiten

Het onderstaande diagram laat zien hoe verificatie tussen uw externe toepassing (webserver en webpagina) en verbonden app werkt.

  1. Gebruiker bezoekt de webpagina: wanneer een gebruiker de ingesloten inhoud op een webpagina bezoekt, stuurt de webpagina een GET-verzoek naar uw externe toepassing om de HTML op die webpagina op te halen.
  2. Externe toepassing construeert een verificatietoken: de externe toepassing construeert een JWT die een geheim van de verbonden app bevat (zie stap 3 hieronder voor aanvullende JWT-vereisten) en de scope van gebruikerstoegang voor de ingesloten inhoud. Het geheim wordt ondertekend door de externe toepassing en wordt in een latere stap gebruikt voor verificatie van de vertrouwensrelatie.
  3. Externe toepassing reageert met verificatietoken: de externe toepassing reageert op de pagina met de JWT in de URL van de ingesloten inhoud die door de webpagina wordt aangeroepen.
  4. Webpagina vraagt om inhoud van Tableau: bij de poging om de ingesloten inhoud te laden roept de webpagina de URL van de ingesloten inhoud aan, die een GET-verzoek naar Tableau verzendt.
  5. Tableau valideert de token: Tableau ontvangt de JWT en verifieert de vertrouwensrelatie met de externe toepassing door de verbonden app en het gedeelde geheim te identificeren dat in de JWT wordt gebruikt. Vervolgens maakt Tableau een sessie voor de gebruiker. De sessie houdt niet alleen rekening met de insluitingsscopes die in de JWT zijn gedefinieerd, maar ook met de beperkingen die in de verbonden app zijn opgegeven, inclusief de geaccepteerde domeinen en projecten.
  6. Tableau retourneert de inhoud op basis van de beperkte insluitingscontext: de ingesloten inhoud wordt alleen geladen als de pagina zich onder een geaccepteerd domein bevindt en de inhoud naar een geaccepteerd project wordt gepubliceerd (indien van toepassing). De geverifieerde gebruiker kan alleen communiceren met de ingesloten inhoud binnen de scope die in de JWT is gedefinieerd.

Een verbonden app maken

Stap 1: Maak een verbonden app

Maak een verbonden app van de instellingenpagina van Tableau Server.

  1. Meld u als serverbeheerder aan bij Tableau Server.

  2. Selecteer in het linkerdeelvenster Instellingen > Verbonden apps.

  3. Klik op de vervolgkeuzepijl van de knop Nieuwe verbonden app en selecteer Directe vertrouwensrelatie.

    Opmerking: als u Tableau Server 2023.3 of eerder gebruikt, klikt u op de knop Nieuwe verbonden app.

  4. In het dialoogvenster Verbonden app maken doet u dat een van de volgende dingen:
    • Voor REST API-autorisatieworkflows (inclusief Metadata API-workflows die de REST API gebruiken voor verificatie) voert u in het tekstvak Naam van verbonden app een naam voor de verbonden app in en klikt u op de knop Maken.

      Opmerking: u kunt bij het configureren van een verbonden app voor REST API- en Tableau-metadata-API-autorisatie de opties Toegangsniveau en Toelatingslijst van domeinen negeren.

    • Voor workflows insluiten doet u het volgende:

      1. Voer in het tekstvak Naam van verbonden app een naam voor de verbonden app in.
      2. Selecteer in het vervolgkeuzemenu Van toepassing op de optie Alle projecten of Slechts één project om te bepalen welke weergaven of statistieken kunnen worden ingesloten. Als u de optie Slechts één project selecteert, selecteert u het specifieke project waarop u zich wilt richten. Zie Toegangsniveau (alleen workflows insluiten) voor meer informatie over deze twee opties.

        Opmerkingen: 

      3. Geef op de toelatingslijst van domeinen de domeinen op met behulp van de regels die worden beschreven in Domeinnotatie hieronder om te bepalen waar weergaven of statistieken kunnen worden ingesloten.

        Belangrijk: we raden u aan de toelatingslijst van domeinen te gebruiken als best practice voor beveiliging om ervoor te zorgen dat Tableau-inhoud alleen wordt ingesloten op locaties die u toestaat.

      4. Wanneer u klaar bent, klikt u op de knop Maken.

  5. Klik naast de naam van de verbonden app op het menu Actie en selecteer Inschakelen. Om veiligheidsredenen wordt een verbonden app bij het maken standaard uitgeschakeld.

  6. Noteer de ID van de verbonden app, ook wel de client-ID genoemd, zodat u deze in stap 3 hieronder kunt gebruiken.

Stap 2: Genereer een geheim

U kunt voor elke verbonden app in totaal twee geheimen genereren. Het tweede geheim kan worden gebruikt voor geheime rotatiedoeleinden ter bescherming tegen problemen als een geheim bekend is geworden.

  1. Klik op de detailpagina van de verbonden app die u in stap 1 hebt gemaakt, op de knop Nieuw geheim genereren.

  2. Noteer de geheim-ID en de geheime waarde die u in stap 3 hieronder moet gebruiken.

Stap 3: Configureer de JWT

Nadat u een geheim hebt gegenereerd, wilt u ervoor zorgen dat uw externe toepassing een geldige JWT kan verzenden. JWT is een standaard die wordt gebruikt om informatie tussen twee partijen veilig over te dragen. De JWT wordt ondertekend door uw externe toepassing om veilig informatie naar Tableau Server te verzenden. De JWT verwijst naar de verbonden app, de gebruiker voor wie de sessie wordt gegenereerd en het toegangsniveau dat de gebruiker nodig heeft.

Een geldige JWT bevat de volgende informatie:

  • ID van de verbonden app, ook wel de client-ID genoemd, uit stap 1
  • Geheim-ID en geheime waarde gegenereerd in stap 2

  • Geregistreerde claims en header:

    ClaimNaamBeschrijving of vereiste waarde
    kidGeheim-IDVereist (in header). De sleutel-ID van het geheim van de verbonden app.
    issUitgeverVereist (in header). Unieke uitgever-URI die de vertrouwde verbonden app en de ondertekeningssleutel identificeert.
    algAlgoritmeVereist (in header). JWT-ondertekeningsalgoritme. Alleen HS256 wordt ondersteund.
    subOnderwerpGebruikersnaam van de geverifieerde Tableau Server-gebruiker.
    audDoelgroepWaarde moet zijn: tableau.
    expVervaltijd Een geldige JWT mag niet vervallen zijn. De vervaltijd (in UTC) van de JWT moet binnen de geconfigureerde maximale geldigheidsduur liggen. De maximale geldigheidsduur kan worden geconfigureerd met de opdracht vizportal.oauth.connected_apps.max_expiration_period_in_minutes.
    jtiJWT-IDVereist als claim. De JWT-ID-claim biedt een unieke ID voor de JWT en is hoofdlettergevoelig.
    scp

    Belangrijk: gebruik niet scope.

    ScopeVoor workflows insluiten zijn de ondersteunde waarden onder meer:

    tableau:views:embed
    tableau:views:embed_authoringtoegevoegd in Tableau Server 2022.3
    tableau:metrics:embed (buiten gebruik gesteld in Tableau Server 2023.3)
    tableau:ask_data:embed(toegevoegd in Tableau Server 2023.1)

    Opmerkingen:

    • Waarden moeten worden doorgegeven als lijsttype.
    • Voor tableau:views:embed en tableau:views:embed_authoring houdt de scope rekening met de gebruikersmachtigingen die al in Tableau Server zijn geconfigureerd, en stelt gebruikers in staat om te communiceren met de tools in de ingesloten weergave, mits beschikbaar in de oorspronkelijke weergave.
    • We raden aan dat de insluitcode de werkbalkparameter uitsluit. Zie Bekende problemen (alleen workflows insluiten) hieronder voor meer informatie.

    Zie REST API-autorisatieworkflows voor REST API-methoden die JWT-autorisatie ondersteunen.

    Voor Metadata-API-workflows die de REST API voor verificatie gebruiken is de enige ondersteunde scope tableau:content:read.

    https://tableau.com/groups Alleen voor workflows insluiten.

    De waarde moet overeenkomen met de naam van een of meer groepen in Tableau Server. Zie de sectie Dynamisch groepslidmaatschap (alleen workflows insluiten) hieronder voor meer informatie.

Voorbeelden van JWT's

Hier zijn voorbeelden van JWT's in zowel Java als Python. De Java- en Python-voorbeelden maken gebruik van respectievelijk de nimbus-jose-jwt-bibliotheek en de PyJWT-bibliotheek.

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

Nadat u de JWT hebt geconfigureerd en de code door uw externe toepassing wordt uitgevoerd, genereert deze een token.

Stap 4: Volgende stappen

Workflows insluiten

Nadat de JWT is geconfigureerd, moet u insluitcode toevoegen aan uw externe toepassing. Zorg ervoor dat u de geldige JWT die u in stap 3 hierboven hebt geconfigureerd, opneemt in het webonderdeel dat uw externe toepassing aanroept.

Zie voor meer informatie over het insluiten van Tableau-inhoud een of beide van de volgende onderwerpen:

Opmerking: Om ervoor te zorgen dat gebruikers zich succesvol kunnen verifiëren wanneer ze toegang krijgen tot ingesloten inhoud, moeten browsers worden geconfigureerd om cookies van externe partijen toe te staan.

Voor REST API-autorisatieworkflows

Nadat de JWT is geconfigureerd, moet u de geldige JWT toevoegen aan het REST API-aanmeldingsverzoek voor geautoriseerde toegang. Zie Toegangsbereiken voor verbonden apps voor meer informatie.

Voor Tableau-metadata-API-workflows

Nadat de JWT is geconfigureerd, moet u de geldige JWT toevoegen aan het REST API-aanmeldingsverzoek. Zie Toegangsbereiken voor verbonden apps voor meer informatie.

Een verbonden app beheren

Op de pagina Verbonden apps kunt u alle verbonden apps voor uw site beheren. U kunt taken uitvoeren zoals het maken, verwijderen en uitschakelen van verbonden apps; en het intrekken of genereren van nieuwe geheimen als bestaande geheimen bekend zijn geworden.

  1. Meld u als serverbeheerder aan bij Tableau Server.

  2. Selecteer in het linkerdeelvenster Instellingen > Verbonden apps.

  3. Schakel het selectievakje in naast de verbonden app die u wilt beheren en voer een of meer van de volgende handelingen uit:

    • Nieuw geheim genereren volgens de rotatietijdlijn die is gespecificeerd in het beveiligingsbeleid van uw organisatie. Om een extra geheim te genereren klikt u op de naam van de verbonden app en vervolgens op de knop Nieuw geheim genereren. Een verbonden app kan maximaal twee geheimen hebben. Beide geheimen kunnen tegelijkertijd actief zijn, verlopen niet en blijven geldig totdat ze worden verwijderd.

    • Details van verbonden app bekijken door op de naam van de verbonden app te klikken om te zien wanneer de verbonden app is gemaakt, en wat de ID, de scope van het project en het domein en de geheimen van de app zijn.

    • Projectscope of het domein wijzigen, selecteer in het menu Acties de optie Bewerking. Breng uw wijzigingen aan en klik op Update.

      Opmerking: als u de scope van het project of domein wijzigt en de ingesloten inhoud in het nieuwe project of nieuwe domein niet bestaat, kan de ingesloten weergave of statistiek niet meer worden weergegeven en krijgen gebruikers bij het openen van de ingesloten inhoud een foutmelding te zien.

    • Geheim verwijderen door op de naam van de verbonden app te klikken. Klik op de pagina van de verbonden app op Acties naast het geheim en selecteer Verwijderen. Selecteer in het bevestigingsdialoogvenster opnieuw Verwijderen.

      Opmerking: als het geheim van de verbonden app wordt gebruikt door een externe toepassing, kan de ingesloten weergave of statistiek niet meer worden weergegeven nadat het geheim is verwijderd. Zie Effecten van het uitschakelen of verwijderen van een verbonden app of het verwijderen van een geheim hieronder voor meer informatie.

    • Verbonden app uitschakelen, selecteer in het menu Acties de optie Uitschakelen. Als de verbonden app wordt gebruikt door een externe toepassing, kan de ingesloten weergave of statistiek niet meer worden weergegeven nadat de verbonden app is verwijderd. Zie Effecten van het uitschakelen of verwijderen van een verbonden app of het verwijderen van een geheim hieronder voor meer informatie.

Effecten van het uitschakelen of verwijderen van een verbonden app of het verwijderen van een geheim

Als u ingesloten inhoud voor uw gebruikers wilt weergeven of REST API-toegang wilt inschakelen via een verbonden app, moet de verbonden app zijn ingeschakeld en moet het geheim zijn gegenereerd. Als de verbonden app in uw externe toepassing wordt gebruikt en wordt uitgeschakeld of verwijderd, of als het geheim wordt verwijderd of vervangen, krijgen gebruikers foutmelding 403.

Om dit probleem te voorkomen moet u ervoor zorgen dat de verbonden app is ingeschakeld en dat de JWT de juiste geheim-ID en waarde gebruikt.

Toegangsniveau (alleen workflows insluiten)

Bij het configureren van het toegangsniveau van een verbonden app kunt u een van de twee projecttypen selecteren. Het toegangsniveau bepaalt welke inhoud kan worden ingesloten.

  • Alle projecten: met deze optie kan de inhoud van alle projecten worden ingesloten
  • Slechts één project: met deze optie kan alleen de inhoud van het opgegeven project worden ingesloten. Als het opgegeven project geneste projecten bevat, is het insluiten van inhoud in die geneste projecten niet ingeschakeld.

Meerdere projecten

Vanaf Tableau Server 2024.2 kunt u de inhoud in meerdere projecten voor een verbonden app alleen inschakelen met behulp van de Tableau REST API. Om de projecten op te geven gebruikt u de project-ID's in de methode Verbonden app maken(Link wordt in een nieuw venster geopend) of Verbonden app bijwerken(Link wordt in een nieuw venster geopend).

Opmerking: wanneer voor uw verbonden app meerdere projecten zijn geconfigureerd, geeft Tableau Meerdere projecten weer als toegangsniveau van de verbonden app. Als u Slechts één project of Alle projecten selecteert en de verbonden app bijwerkt, is de optie Meerdere projecten niet meer zichtbaar. Als u de verbonden app opnieuw voor meerdere projecten wilt configureren, moet u de REST API gebruiken.

Regels voor de toelatingslijst van domeinen (alleen workflows insluiten)

Met de toelatingslijst van domeinen van de verbonden app kunt u de toegang tot ingesloten Tableau-inhoud beperken tot alle domeinen of sommige domeinen; of u kunt sommige domeinen uitsluiten of alle domeinen blokkeren.

Belangrijk: we raden u aan de toelatingslijst van domeinen te gebruiken als best practice voor beveiliging om ervoor te zorgen dat Tableau-inhoud alleen wordt ingesloten op locaties die u toestaat.

Domeinopties

Bij het configureren van de toelatingslijst van domeinen van een verbonden app kunt u een van deze twee opties selecteren:

  • Alle domeinen: als standaardoptie maakt deze optie onbeperkte toegang tot ingesloten inhoud mogelijk.
  • Alleen specifieke domeinen: met deze optie kunt u de toegang tot ingesloten inhoud beperken. Als u deze optie gebruikt, volgt u de opmaakregels die zijn gespecificeerd in de volgende sectie: Domeinnotatie.

Domeinnotatie

In het tekstvak voor de toelatingslijst van domeinen kunt u een of meer domeinen invoeren met behulp van de onderstaande notatievoorbeelden.

Opmerking: regels voor domeinnotatie gelden ook bij gebruik van de Connect App-methoden(Link wordt in een nieuw venster geopend) in de Tableau REST API.

Hier ziet u een aantal notatievoorbeelden op basis van veelvoorkomende scenario's:

Opgeven...VoorbeeldInsluitingstoegang
Domeinenbereik*.myco.comIngesloten inhoud is toegankelijk vanuit alle subdomeinen onder myco.com.
Alle poortenmyco.com:*Ingesloten inhoud is toegankelijk via alle poorten in myco.com.
Specifieke poortmyco.com:8080Ingesloten inhoud is alleen toegankelijk via poort 8080 in myco.com.
Meerdere discrete domeinenmyco.com
events.myco.com
ops.myco.com

Ingesloten inhoud is toegankelijk vanuit alle drie de domeinen.

Opmerking: wanneer u meerdere domeinen opgeeft, typt u elk domein op een nieuwe regel of scheidt u domeinen met een spatie. Voor de REST API moeten domeinen worden gescheiden door een spatie.

Alleen beveiligd verkeerhttps:Ingesloten inhoud is veilig toegankelijk, ongeacht het domein.
Verkeer naar alle poorten voor een reeks domeinen beveiligenhttps:*myco.com:*Ingesloten inhoud is veilig toegankelijk via alle poorten op alle subdomeinen onder myco.com.
Geen domeinen[geen domeinen]De toegang tot ingesloten inhoud is geblokkeerd.

Dynamisch groepslidmaatschap (alleen workflows insluiten)

Vanaf Tableau Server 2024.2, kunt u, als verbonden apps zijn geconfigureerd en de instelling van deze optie is ingeschakeld, het groepslidmaatschap dynamisch beheren via aangepaste claims die zijn opgenomen in de JWT die door de externe toepassing is verzonden.

Indien hiervoor geconfigureerd, verzendt de externe toepassing tijdens gebruikersverificatie de JWT die twee aangepaste claims voor groepslidmaatschap bevat: groep (https://tableau.com/groups) en groepsnamen (bijvoorbeeld "Groep1" en "Groep2") waarin de gebruiker zich moet bevinden. Tableau valideert de JWT en maakt vervolgens toegang mogelijk tot de groepen en de inhoud waarvan de machtigingen afhankelijk zijn van die groepen.

Zie Lidmaatschap van een dynamische groep met behulp van beweringen voor meer informatie.

Bekende problemen (alleen workflows insluiten)

Er zijn een aantal bekende problemen bij het gebruik van verbonden apps die in een toekomstige release zullen worden aangepakt.

  • Functies van de werkbalk: Als bij ingesloten inhoud de werkbalkparameter is gedefinieerd, werken niet alle werkbalkfuncties. Om dit probleem te omzeilen, raden we u aan de werkbalkparameter te verbergen, zoals in het onderstaande voorbeeld.

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

  • Gepubliceerde databronnen: Gepubliceerde databronnen die voor databasereferenties zijn ingesteld op Gebruiker vragen, worden niet weergegeven. Om dit probleem te omzeilen, raden we eigenaren van databronnen aan om in plaats daarvan hun databasereferenties in te sluiten.

  • Ingesloten weergaven op meerdere sites: In Tableau Server 2023.1 en eerder veroorzaakt het schakelen tussen weergaven op verschillende sites in dezelfde browser fout 1008: Kan geheim voor verbonden app niet ophalen. Om dit probleem te omzeilen, kunt u upgraden naar Tableau Server 2023.3 of hoger.
  • Data opvragen-objecten in ingesloten dashboards: Data opvragen-objecten in ingesloten dashboards wordt niet geladen. (In Tableau Server 2024.2 stelt Data opvragen buiten gebruik.)

  • Statistieken en toelatingslijst van domeinen: Ingesloten weergaven van statistieken worden weergegeven ondanks toegangsbeperkingen die mogelijk zijn opgegeven in de acceptatielijsten van domeinen van de verbonden apps. Opmerking: Statistieken die toegankelijk zijn via werkbalken van ingesloten weergaven zullen normaal werken. (In Tableau Server 2023.3 heeft Tableau de mogelijkheid om statistieken in te sluiten buiten gebruik gesteld.)

Bedankt voor uw feedback.De feedback is verzonden. Dank u wel.