Configurare le app connesse di Tableau per abilitare l’accesso SSO per il contenuto incorporato.

A partire da Tableau Server versione 2022.1, le app connesse di Tableau consentono un’esperienza di autenticazione semplice e sicura, facilitando una relazione di trust esplicita tra il sito Tableau Server e le applicazioni esterne in cui è incorporato il contenuto di Tableau. In Tableau Server 2022.3 le app connesse di Tableau hanno esteso le proprie funzionalità di supporto dell’autorizzazione dell’API REST. E a partire da Tableau Server 2023.3, l’autorizzazione dell’API REST tramite le app connesse è rispettata dall’API dei metadati.

Le app connesse offrono i seguenti vantaggi:

  • Limitare l’accesso ai contenuti che possono essere incorporati e alle posizioni in cui tali contenuti possono essere incorporati
  • Offrire agli utenti la possibilità di accedere ai contenuti incorporati utilizzando l’accesso Single Sign-On (SSO) senza dover eseguire l’integrazione con un provider di identità (IdP)
  • Offrire agli utenti la possibilità di autenticarsi direttamente dalla tua applicazione esterna
  • Autorizzare programmaticamente l’accesso all’API REST di Tableau (e all’API dei metadati a partire da Tableau Server 2023.3) per conto degli utenti utilizzando il token Web JSON (JWT)

Note:

  • La funzionalità per le app connesse, senza interfaccia utente, per Tableau Server è diventata disponibile in Tableau Server versione 2021.4 tramite i metodi per le app connesse(Il collegamento viene aperto in una nuova finestra) nell’API REST di Tableau.
  • Per abilitare l’incorporamento tramite app connesse, Tableau Server deve essere configurato per l’utilizzo di SSL per il traffico HTTP.
  • Affinché il token di sessione sia valido, gli orologi dell’applicazione esterna e del server che ospita l’applicazione esterna devono essere impostati su UTC (tempo coordinato universale). Se uno degli orologi utilizza uno standard diverso, l’app connessa non verrà considerata attendibile.
  • Le app connesse di Tableau e le app connesse di Salesforce sono diverse e offrono funzionalità differenti. Attualmente, le app connesse a Tableau sono ottimizzate per incorporare viste e metriche di Tableau nelle applicazioni esterne. Nell’ottobre 2023, Tableau ha ritirato la possibilità di incorporare le metriche in Tableau Cloud e Tableau Server versione 2023.3.

Come funzionano le app connesse

La relazione di trust tra il sito Tableau Server e l’applicazione esterna viene stabilita e verificata tramite un token di autenticazione nello standard JWT (JSON Web Token), che utilizza un segreto condiviso fornito dall’app connessa di Tableau e firmato dall’applicazione esterna.

Componenti principali di un’app connessa

I seguenti componenti dell’app connessa funzionano insieme al token JWT nell’applicazione esterna per autenticare gli utenti e visualizzare il contenuto incorporato.

  • Segreti: i segreti sono chiavi condivise da Tableau e dall’applicazione esterna. Sono utilizzati nelle firme che formano il token JWT. È necessario un segreto quando si utilizzano app connesse per incorporare l’autenticazione. I segreti possono essere creati in un’app connessa, non scadono e rimangono validi fino all’eliminazione.
  • Elenco consentiti di dominio: puoi specificare un elenco di domini consentiti in ogni app connessa. Il contenuto di Tableau incorporato tramite un’app connessa è consentito solo nei domini specificati. Ciò aiuta a garantire che i contenuti siano esposti nei domini protetti e approvati dalla tua azienda.
  • Livello di accesso: puoi specificare quale contenuto può essere incorporato tramite un’app connessa associando un’app connessa a un progetto o a tutti i progetti. Se specifichi un progetto, solo il contenuto del progetto selezionato può essere incorporato tramite l’app connessa.

Flusso di lavoro dell’app connessa

Il diagramma seguente illustra come funziona l’autenticazione tra l’applicazione esterna (server Web e pagina Web) e l’app connessa.

  1. L’utente visita la pagina Web: quando un utente visita il contenuto incorporato in una pagina Web, la pagina Web invia una richiesta GET all’applicazione esterna per recuperare il codice HTML per la pagina Web.
  2. L’applicazione esterna crea un token di autenticazione: l’applicazione esterna crea un token JWT, che contiene un segreto dell’app connessa (vedi la fase 3 di seguito per ulteriori requisiti del token JWT) e l’ambito dell’accesso utente per il contenuto incorporato. Il segreto viene firmato dall’applicazione esterna ed è utilizzato per la verifica della relazione di trust in una fase successiva.
  3. L’applicazione esterna risponde con il token di autenticazione: l’applicazione esterna risponde alla pagina con il token JWT nell’URL del contenuto incorporato chiamato dalla pagina Web.
  4. La pagina Web richiede il contenuto a Tableau: nel tentativo di caricare il contenuto incorporato, la pagina Web chiama l’URL del contenuto incorporato, che invia una richiesta GET a Tableau.
  5. Tableau convalida il token: Tableau riceve il token JWT e verifica la relazione di trust con l’applicazione esterna identificando l’app connessa e il segreto condiviso utilizzati nel token JWT. Tableau crea quindi una sessione per l’utente. La sessione rispetta non solo gli ambiti di incorporamento definiti nel token JWT, ma anche le restrizioni specificate nell’app connessa, inclusi i domini consentiti e i progetti consentiti.
  6. Tableau restituisce il contenuto in base al contesto di incorporamento limitato: il contenuto incorporato viene caricato solo quando la pagina si trova in un dominio consentito e il contenuto viene pubblicato in un progetto consentito (se applicabile). L’utente autenticato può interagire solo con il contenuto incorporato nell’ambito definito nel token JWT.

Creare un’app connessa

Fase 1. Creare un’app connessa

Crea un’app connessa dalla pagina Impostazioni di Tableau Server.

  1. In qualità di amministratore del server, accedi a Tableau Server.

  2. Dal riquadro di sinistra seleziona Impostazioni > App connesse, quindi fai clic sul pulsante Nuova app connessa.

  3. Nella finestra di dialogo Crea app connessa procedi come segue:
    1. Per i workflow di autorizzazione dell’API REST (inclusi i workflow di autorizzazione dell’API dei metadati che utilizzano l’API REST per l’autenticazione), immetti un nome per l’app connessa nella casella di testo Nome app connessa e fai clic sul pulsante Crea.

      Nota: puoi ignorare le opzioni Livello di accesso ed Elenco consentiti di dominio durante la configurazione di un’app connessa per l’autorizzazione dell’API REST e dell’API dei metadati.

    2. Per l’incorporamento di flussi di lavoro, procedi come segue:

      1. Nella casella di testo Nome app connessa inserisci un nome per l’app connessa.

      2. Dal menu a discesa Si applica a seleziona Tutti i progetti o Un solo progetto per controllare quali viste o metriche possono essere incorporate. Se selezioni l’opzione "Un solo progetto", seleziona il progetto specifico a cui applicare l’ambito. Per maggiori informazioni su queste due opzioni, consulta Livello di accesso (solo incorporamento di flussi di lavoro).

        Note:

      3. Nell’elenco consentiti di dominio specifica i domini utilizzando le regole descritte di seguito in Formattazione del dominio per controllare dove è possibile incorporare le viste o le metriche.

      4. Al termine, fai clic sul pulsante Crea.

  4. Accanto al nome dell’app connessa, fai clic sul menu Azioni e seleziona Abilita. Per motivi di sicurezza, un’app connessa è disabilitata per impostazione predefinita quando viene creata.

  5. Prendi nota dell’ID dell’app connessa, anche denominato ID client, da utilizzare nella fase 3 di seguito.

Fase 2. Generare un segreto

Puoi generare un totale di due segreti per ogni app connessa. Il secondo segreto può essere utilizzato a scopo di rotazione dei segreti, in modo da evitare problemi se un segreto viene compromesso.

  1. Nella pagina dei dettagli dell’app connessa creata nella fase 1 fai clic sul pulsante Genera nuovo segreto.

  2. Prendi nota dell’ID e del valore del segreto da utilizzare nella fase 3 di seguito.

Fase 3. Configurare il token JWT

Dopo aver generato un segreto, vuoi consentire all’applicazione esterna di inviare un token JWT valido. JWT è uno standard utilizzato per trasferire in modo sicuro le informazioni tra due parti. Il token JWT è firmato dall’applicazione esterna per inviare informazioni in modo sicuro a Tableau Server. Il token JWT fa riferimento all’app connessa, all’utente per cui viene generata la sessione e al livello di accesso che l’utente deve avere.

Un token JWT valido include le seguenti informazioni:

  • ID dell’app connessa, anche denominato ID client, dalla fase 1
  • ID e valore del segreto generati nella fase 2

  • Attestazioni registrate e intestazione:

    AttestazioneNomeDescrizione o valore richiesto
    "kid"ID segretoObbligatorio (nell’intestazione). ID segreto dell’app connessa.
    "iss"Rilasciato daObbligatorio (nell’intestazione). URI dell’emittente univoco che identifica l’app connessa attendibile e la relativa chiave di firma.
    "alg"AlgoritmoObbligatorio (nell’intestazione). Algoritmo di firma JWT. È supportato solo HS256.
    "sub"OggettoNome utente dell’utente autenticato di Tableau Server.
    "aud"DestinatariIl valore deve essere be: "tableau".
    "exp"Ora di scadenza

    Un token JWT valido non deve essere scaduto. L’ora di scadenza del token JWT deve rientrare nel periodo di validità massimo configurato. Il periodo di validità massimo può essere configurato utilizzando il comando tsm vizportal.oauth.connected_apps.max_expiration_period_in_minutes.

    "jti"ID JWTObbligatorio come attestazione. L’attestazione ID JWT fornisce un identificatore univoco per il token JWT, applicando la distinzione tra maiuscole e minuscole.
    "scp"

    Importante: non utilizzare "scope".

    AmbitoPer l’incorporamento di flussi di lavoro, i valori supportati includono:

    "tableau:views:embed"
    "tableau:views:embed_authoring" (Aggiunto in Tableau Server 2022.3)
    "tableau:metrics:embed” (ritirato in Tableau Server 2023.3)
    "tableau:ask_data:embed" (aggiunto in Tableau Server versione 2023.1)

    Note:

    • I valori devono essere passati come tipo di elenco.
    • Per tableau:views:embed, l’ambito rispetta le autorizzazioni degli utenti già configurate in Tableau Server e consente agli utenti di interagire con gli strumenti nella vista incorporata, se disponibili nella vista originale.
    • È consigliabile che il codice di incorporamento escluda il parametro toolbar. Per maggiori informazioni, consulta Problemi noti (solo incorporamento di flussi di lavoro) di seguito.

    Per i workflow di autorizzazione dell’API REST, consulta Metodi API REST che supportano l’autorizzazione JWT.

    Per i flussi di lavoro dell’API dei metadati che utilizzano l’API REST per l’autenticazione, l’unico ambito supportato è tableau:content:read.

Token JWT di esempio

Ecco alcuni token JWT di esempio nei linguaggi Java e Python. Gli esempi Java e Python utilizzano rispettivamente la libreria nimbus-jose-jwt e la libreria 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
        }
  )

Dopo aver configurato il token JWT, quando il codice viene eseguito dall’applicazione esterna, genererà un token.

Fase 4. Fasi successive

Per l’incorporamento di flussi di lavoro

Dopo che il token JWT è stato configurato, devi aggiungere il codice di incorporamento alla tua applicazione esterna. Assicurati di includere il token JWT valido configurato nella fase 3 nel componente Web chiamato dall’applicazione esterna.

Per maggiori informazioni sull’incorporamento del contenuto di Tableau, consulta uno o entrambi i seguenti argomenti:

Nota: affinché gli utenti possano eseguire correttamente l’autenticazione quando accedono ai contenuti incorporati, i browser devono essere configurati in modo da consentire i cookie di terze parti.

Per i workflow di autorizzazione dell’API REST

Dopo che il token JWT è stato configurato, è necessario aggiungere il token JWT valido alla richiesta di accesso all’API REST per l’accesso autorizzato. Per maggiori informazioni, consulta Ambiti di accesso per le app connesse.

Per i flussi di lavoro dell’API dei metadati

Dopo averlo configurato, devi aggiungere il token JWT valido alla richiesta di accesso all’API REST. Per maggiori informazioni, consulta Ambiti di accesso per le app connesse.

Gestire un’app connessa

La pagina App connesse consente di gestire tutte le app connesse per il sito. Puoi eseguire attività come la creazione, l’eliminazione e la disabilitazione di app connesse, nonché revocare o generare nuovi segreti se i segreti esistenti sono stati compromessi.

  1. In qualità di amministratore del server o del sito, accedi a Tableau Server.

  2. Dal riquadro di sinistra seleziona Impostazioni > App connesse.

  3. Seleziona la casella di controllo accanto all’app connessa che desideri gestire ed esegui una o più delle seguenti operazioni:

    • Genera un nuovo segreto in base alla tempistica di rotazione specificata dai criteri di sicurezza della tua organizzazione. Per generare un segreto aggiuntivo, fai clic sul nome dell’app connessa, quindi sul pulsante Genera nuovo segreto. Un’app connessa può avere un massimo di due segreti. Entrambi i segreti possono essere attivi contemporaneamente, non scadono e rimangono validi fino all’eliminazione.

    • Esamina i dettagli dell’app connessa facendo clic sul nome dell’app connessa per vedere quando è stata creata, il relativo ID, gli ambiti del progetto e del dominio e i relativi segreti.

    • Modifica l’ambito o il dominio del progetto. Nel menu Azioni seleziona Modifica. Apporta le modifiche e fai clic su Aggiorna.

      Nota: se modifichi gli ambiti del progetto o del dominio e il contenuto incorporato non esiste né nel nuovo progetto né nel nuovo dominio, la vista o la metrica incorporata non potrà essere visualizzata e agli utenti verrà mostrato un errore quando accedono al contenuto incorporato.

    • Elimina un segreto facendo clic sul nome dell’app connessa. Nella pagina dell’app connessa fai clic su Azioni accanto al segreto, quindi seleziona Elimina. Nella finestra di dialogo di conferma seleziona nuovamente Elimina.

      Nota: se il segreto dell’app connessa viene utilizzato da un’applicazione esterna, la metrica o la vista incorporata non può essere visualizzata dopo l’eliminazione del segreto. Per maggiori informazioni, consulta Effetti della disabilitazione o dell’eliminazione di un’app connessa o dell’eliminazione di un segreto di seguito.

    • Disabilita un’app connessa. Nel menu Azioni seleziona Disabilita. Se l’app connessa viene utilizzata dall’applicazione esterna, la metrica o la vista incorporata non può essere visualizzata dopo la disabilitazione dell’app connessa. Per maggiori informazioni, consulta Effetti della disabilitazione o dell’eliminazione di un’app connessa o dell’eliminazione di un segreto di seguito.

Effetti della disabilitazione o dell’eliminazione di un’app connessa o dell’eliminazione di un segreto

Per mostrare all’utente una vista o una metrica incorporata tramite un’app connessa, è necessario che l’app connessa sia abilitata e che venga generato un segreto. Se l’app connessa è utilizzata nell’applicazione esterna e viene disabilitata o eliminata, oppure il relativo segreto viene eliminato o sostituito, agli utenti verrà mostrato un errore quando accedono al contenuto incorporato.

Per evitare questo problema, assicurati che l’app di connessione sia abilitata e che il token JWT utilizzi l’ID e il valore del segreto corretti.

Livello di accesso (solo incorporamento di flussi di lavoro)

Puoi selezionare uno dei due tipi di progetto durante la configurazione del livello di accesso di un’app connessa: Il livello di accesso controlla quali contenuti possono essere incorporati.

  • Tutti i progetti: questa opzione consente di incorporare il contenuto in tutti i progetti.
  • Un solo progetto: questa opzione consente di incorporare solo il contenuto nel progetto specificato. Se il progetto specificato contiene progetti nidificati, l’incorporamento del contenuto in tali progetti nidificati non è abilitato.

Regole dell’elenco consentiti di dominio (solo incorporamento di flussi di lavoro)

L’elenco consentiti di dominio dell’app connessa ti consente di limitare l’accesso ai contenuti di Tableau incorporati a tutti i domini o ad alcuni domini oppure di escludere alcuni domini o bloccare tutti i domini.

Opzioni per il dominio

Puoi selezionare una delle due opzioni durante la configurazione dell’elenco consentiti di dominio di un’app connessa:

  • Tutti i domini: come opzione predefinita, questa opzione consente l’accesso illimitato al contenuto incorporato.
  • Solo domini specifici: questa opzione ti offre la possibilità di limitare l’accesso al contenuto incorporato. Se utilizzi questa opzione, segui le regole di formattazione specificate nella sezione seguente, Formattazione del dominio.

Formattazione del dominio

Nella casella di testo dell’elenco consentiti di dominio puoi inserire uno o più domini utilizzando gli esempi di formattazione seguenti.

Nota: le regole di formattazione del dominio si applicano anche quando si utilizzano i metodi per le app connesse(Il collegamento viene aperto in una nuova finestra) dell’API REST di Tableau.

Ecco alcuni esempi di formattazione basati su scenari comuni:

Per specificare...EsempioAccesso al contenuto incorporato
Gamma di domini*.myco.comIl contenuto incorporato è accessibile da tutti i sottodomini in myco.com.
Tutte le portemyco.com:*Il contenuto incorporato è accessibile da tutte le porte in myco.com.
Porta specificamyco.com:8080Il contenuto incorporato è accessibile solo dalla porta 8080 in myco.com.
Più domini discretimyco.com
events.myco.com
ops.myco.com

Il contenuto incorporato è accessibile da tutti e tre i domini.

Nota: quando specifichi più domini, digita ciascun dominio su una nuova riga o separa i domini con uno spazio. Per l’API REST, i domini devono essere separati da uno spazio.

Solo traffico sicurohttps:Il contenuto incorporato è accessibile in modo sicuro indipendentemente dal dominio.
Protezione del traffico verso tutte le porte per una gamma di dominihttps:*myco.com:*Il contenuto incorporato è accessibile in modo sicuro da tutte le porte in tutti i sottodomini di myco.com.
Nessun dominio[nessun dominio]L’accesso ai contenuti incorporati è bloccato.

Problemi noti (solo incorporamento di flussi di lavoro)

Esistono alcuni problemi noti per l’utilizzo delle app connesse che verranno risolti in una versione futura.

  • Funzionalità della barra degli strumenti: quando per il contenuto incorporato è definito il parametro toolbar, non tutte le funzionalità della barra degli strumenti funzioneranno. Per risolvere il problema, è consigliabile nascondere il parametro toolbar come nell’esempio seguente.

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

  • Origini dati pubblicate: le origini dati pubblicate impostate su Avvisa utente per le credenziali del database non verranno visualizzate. Per risolvere il problema, se possibile, è consigliabile che i proprietari delle origini dati incorporino le proprie credenziali del database.
  • Oggetti Chiedilo ai dati nelle dashboard incorporate: gli oggetti Chiedilo ai dati nelle dashboard incorporate non verranno caricati. Chiedilo ai dati verrà ritirato in Tableau Server 2024.2.

  • Elenco consentiti per metriche e domini: le viste delle metriche incorporate verranno visualizzate nonostante le restrizioni di accesso che potrebbero essere specificate negli elenchi consentiti per i domini delle app connesse. Nota: i dati delle metriche a cui si accede dalle barre degli strumenti delle viste incorporate funzioneranno come previsto. In Tableau Server 2023.3 è stata eliminata la possibilità di incorporare parametri.

Grazie per il tuo feedback.Il tuo feedback è stato inviato. Grazie!