Configurare le app connesse con un trust diretto

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.

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.

Come funzionano le app connesse di Tableau con trust diretto

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 o API REST. I segreti possono essere creati in un’app connessa, non scadono e rimangono validi fino all’eliminazione.
  • Elenco consentiti di dominio (solo per incorporamento workflow): 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 (solo per incorporamento workflow): 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. Se desideri specificare più progetti, devi utilizzare l’API REST di Tableau.

Flusso di lavoro dell’app connessa

Incorporamento di flussi di lavoro

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

  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.

  3. Fai clic sulla freccia rivolta verso il basso del pulsante Nuova app connessa e seleziona Trust diretto.

    Nota: se utilizzi Tableau Server 2023.3 o versioni precedenti, fai clic sul pulsante Nuova app connessa.

  4. Nella finestra di dialogo Crea app connessa esegui una delle seguenti operazioni:
    • 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.

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

        Importante: ti consigliamo di utilizzare l’elenco consentiti dei domini come procedura consigliata di sicurezza per garantire che il contenuto di Tableau sia incorporato solo nelle posizioni consentite.

      4. Al termine, fai clic sul pulsante Crea.

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

  6. 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). Identificatore della chiave segreta 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 (in UTC) 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 2023.1)

    Note:

    • I valori devono essere passati come tipo di elenco.
    • Per tableau:views:embed e tableau:views:embed_authoring, 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.

    https://tableau.com/groups Solo per l’incorporamento di flussi di lavoro.

    Il valore deve corrispondere al nome di uno o più gruppi di Tableau Server. Per maggiori informazioni, consulta la sezione Appartenenza ai gruppi dinamica (solo incorporamento di flussi di lavoro) di seguito.

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, 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 da un’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 contenuto incorporato all’utente o abilitare l’accesso all’API REST tramite un’app connessa, l’app connessa deve essere abilitata e deve venire generato il relativo 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 403.

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.

Informazioni su più progetti

A partire da Tableau Server 2024.2 , puoi abilitare il contenuto in più progetti per un’app connessa utilizzando solo l’API REST di Tableau. Per specificare i progetti, utilizza gli "ID progetto" nei metodi Crea app connessa(Il collegamento viene aperto in una nuova finestra) o Aggiorna app connessa(Il collegamento viene aperto in una nuova finestra).

Nota: quando sono configurati più progetti per l’app connessa, in Tableau viene visualizzato Più progetti come livello di accesso dell’app connessa. Se selezioni Un solo progetto o Tutti i progetti e aggiorni l’app connessa, l’opzione “Più progetti” non sarà più visibile. Se è necessario configurare nuovamente l’app connessa per più progetti, devi utilizzare l’API REST.

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.

Importante: ti consigliamo di utilizzare l’elenco consentiti dei domini come procedura consigliata di sicurezza per garantire che il contenuto di Tableau sia incorporato solo nelle posizioni consentite.

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.

Appartenenza ai gruppi dinamica (solo incorporamento di flussi di lavoro)

A partire da Tableau Server 2024.2, se sono configurate le app connesse e l’impostazione della funzionalità è abilitata, puoi controllare dinamicamente l’appartenenza ai gruppi tramite attestazioni personalizzate incluse nel token Web JSON inviato dall’applicazione esterna.

Una volta configurata, durante l’autenticazione degli utenti, l’applicazione esterna invia il token Web JSON che contiene due attestazioni personalizzate per l’appartenenza ai gruppi: gruppo (https://tableau.com/groups) e nomi di gruppo (ad esempio, “Gruppo1” e “Gruppo2”) in cui asserire l’utente. Tableau convalida il token Web JSON e quindi consente l’accesso ai gruppi e al contenuto le cui autorizzazioni dipendono da tali gruppi.

Per maggiori informazioni, consulta Appartenenza ai gruppi dinamica con le asserzioni.

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.

  • Viste incorporate su più siti: in Tableau Server 2023.1 e versioni precedenti, al passaggio da una vista all’altra su siti diversi nello stesso browser viene restituito un errore 1008: impossibile recuperare il segreto per l’app connessa. Per ovviare a questo problema, esegui l’upgrade a Tableau Server 2023.3 o versione successiva.
  • 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 ritirata la possibilità di incorporare parametri.

Risoluzione dei problemi

Puoi consultare Risolvere i problemi relativi alle app connesse - Trust diretto per errori che potrebbero essere associati all'app connessa e suggerimenti per la risoluzione dei problemi.

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