Configure las aplicaciones conectadas de Tableau para habilitar el inicio de sesión único para el contenido incrustado

Con la versión de Tableau Server 2022.1, las aplicaciones conectadas a Tableau permiten una experiencia de autenticación segura y sin problemas al facilitar una relación de confianza explícita entre el sitio de Tableau Server y las aplicaciones externas donde el contenido de Tableau está insertado. En Tableau Server 2022.3, las aplicaciones conectadas de Tableau ampliaron sus funcionalidades para admitir la autorización de la API de REST. Y a partir de Tableau Server 2023.3, la API de metadatos respeta la autorización de la API de REST a través de aplicaciones conectadas.

Las aplicaciones conectadas ofrecen los siguientes beneficios:

  • Restringir el acceso a qué contenido se puede insertar y dónde se puede insertar ese contenido.
  • Proporcionar a los usuarios la capacidad de acceder a contenido insertado mediante el inicio de sesión único (SSO) sin tener que integrarse con un proveedor de identidades (IdP).
  • Proporcionar a los usuarios la capacidad de autenticarse directamente desde su aplicación externa.
  • Autorizar mediante programación el acceso la API de REST de Tableau (y de la API de metadatos a partir de Tableau Server 2023.3) en nombre de los usuarios mediante un JSON Web Token (JWT)

Notas:

  • La funcionalidad de aplicaciones conectadas, sin interfaz de usuario, para Tableau Server estuvo disponible en la versión 2021.4 de Tableau Server mediante los métodos de aplicación conectada(El enlace se abre en una ventana nueva) en la API de REST de Tableau.
  • Para habilitar la integración a través de aplicaciones conectadas, Tableau Server debe estar configurado para usar SSL para el tráfico HTTP.
  • Para que el token de sesión sea válido, los relojes de la aplicación externa y el servidor que aloja la aplicación externa deben configurarse en hora universal coordinada (UTC). Si alguno de los relojes usa un estándar diferente, no se confiará en la aplicación conectada.
  • Las aplicaciones conectadas de Tableau y las aplicaciones conectadas de Salesforce son diferentes y ofrecen funcionalidades distintas. En la actualidad, las aplicaciones conectadas de Tableau están optimizadas para incorporar vistas y métricas de Tableau en aplicaciones externas. (En octubre de 2023, Tableau eliminó la capacidad de integrar métricas en Tableau Cloud y Tableau Server versión 2023.3)

Cómo funcionan las aplicaciones conectadas

La relación de confianza entre el sitio de Tableau Server y la aplicación externa se establece y verifica mediante un token de autenticación en el estándar JSON Web Token (JWT), que utiliza un secreto compartido proporcionado por la aplicación Tableau conectada y firmado por la aplicación externa.

Componentes clave de una aplicación conectada

Los siguientes componentes del sistema conectado funcionan junto con el JWT en su aplicación externa para autenticar a los usuarios y mostrar contenido insertado.

  • Secretos: los secretos son claves compartidas por Tableau y su aplicación externa. Se utilizan en firmas que forman el JWT. Se requiere un secreto cuando se utilizan aplicaciones conectadas para incorporar autenticación. Los secretos se pueden crear en una aplicación conectada, no caducan y siguen siendo válidos hasta que se eliminen.
  • Lista de dominios permitidos: puede especificar una lista de dominios permitidos en cada aplicación conectada. El contenido de Tableau insertado a través de una aplicación conectada solo se permite en los dominios especificados. Esto ayuda a garantizar que el contenido se exponga en los dominios que están protegidos y aprobados por su empresa.
  • Nivel de acceso: puede especificar qué contenido se puede insertar a través de una aplicación conectada asociando una aplicación conectada con un proyecto o con todos los proyectos. Si especifica un proyecto, solo el contenido del proyecto seleccionado se puede insertar a través de la aplicación conectada.

Flujo de trabajo de la aplicación conectada

El siguiente diagrama ilustra cómo funciona la autenticación entre la aplicación personalizada (servidor web y página web) y la aplicación externa.

  1. El usuario visita la página web: cuando un usuario visita el contenido insertado en una página web, la página web envía una petición GET a la aplicación externa para recuperar el HTML en esa página web.
  2. La aplicación externa construye un token de autenticación: la aplicación externa construye un JWT, que contiene un secreto de la aplicación conectada (consulte el paso 3 a continuación para conocer los requisitos de JWT adicionales) y el alcance del acceso del usuario para el contenido insertado. El secreto está firmado por la aplicación externa y se utiliza para verificar la relación de confianza en un paso posterior.
  3. La aplicación externa responde con un token de autenticación: la aplicación externa responde a la página con el JWT en la URL del contenido insertado llamado por la página web.
  4. La página web solicita contenido de Tableau: con el intento de cargar el contenido insertado, la página web llama a la URL del contenido insertado, que envía una petición GET a Tableau.
  5. Tableau valida el token: Tableau recibe el JWT y verifica la relación de confianza con la aplicación externa identificando la aplicación conectada y el secreto compartido utilizado en el JWT. Luego, Tableau crea una sesión para el usuario. La sesión no solo respeta los alcances de inserción definidos en el JWT, sino también las restricciones especificadas en la aplicación conectada, incluidos los dominios y los proyectos permitidos.
  6. Tableau devuelve el contenido según el contexto de inserción restringido: el contenido insertado solo se carga cuando la página está bajo un dominio permitido y el contenido se publica en un proyecto permitido (si corresponde). El usuario autenticado solo puede interactuar con el contenido insertado por el alcance definido en el JWT.

Crear una aplicación conectada

Paso 1: Crear una aplicación conectada

Cree una aplicación conectada desde la página de configuración de Tableau Server.

  1. Como administrador de servidor, inicie sesión en Tableau Server.

  2. En el panel izquierdo, seleccione Configuración > Aplicaciones conectadas, y luego haga clic en el botón New Connected App.

  3. En el cuadro de diálogo Crear aplicación conectada, siga uno de estos pasos:
    1. Para los flujos de trabajo de autorización de la API de REST (incluidos los flujos de la API de metadatos que utilizan la API de REST para la autenticación), en el cuadro de texto Nombre de la aplicación conectada, escriba un nombre para la aplicación conectada y haga clic en el botón Crear.

      Nota: Puede ignorar el nivel de acceso y la lista de dominios permitidos al configurar una aplicación conectada para la autorización de la API de metadatos y la API de REST.

    2. Para insertar flujos de trabajo, haga lo siguiente:

      1. En el cuadro de texto Nombre de la aplicación conectada, indique un nombre para la aplicación conectada.

      2. En el menú desplegable Se aplica a, seleccione Todo el proyecto o Solo un proyecto para controlar qué vistas o métricas se pueden insertar. Si selecciona la opción "Solo un proyecto", seleccione el proyecto específico para el alcance. Para obtener más información sobre estas dos opciones, consulte Nivel de acceso (solo para insertar flujos de trabajo).

        Notas:

      3. En la lista de dominios permitidos, especifique los dominios utilizando las reglas descritas en Formato de dominio a continuación para controlar dónde se pueden insertar las vistas o métricas.

      4. Cuando haya terminado, haga clic en el botón Crear.

  4. Junto al nombre de las aplicaciones conectadas, haga clic en el menú de acciones y seleccione Habilitar. Por motivos de seguridad, una aplicación conectada está desactivada de forma predeterminada cuando se crea.

  5. Tome nota del ID de la aplicación conectada, también conocido como ID de cliente, para usarlo en el paso 3 a continuación.

Paso 2: Generar un secreto

Puede generar un total de dos secretos para cada aplicación conectada. El segundo secreto se puede utilizar con fines de rotación de secretos para ayudar a proteger contra problemas si un secreto deje de ser seguro.

  1. En la página de detalles de la aplicación conectada que creó en el paso 1, haga clic en el botón Generar nuevo secreto.

  2. Anote el ID secreto y el valor secreto para usarlos en el paso 3 a continuación.

Paso 3: Configurar el JWT

Después de haber generado un secreto, desea habilitar su aplicación externa para enviar un JWT válido. JWT es un estándar que se utiliza para transferir información de forma segura entre dos partes. El JWT está firmado por su aplicación externa para enviar información de forma segura a Tableau Server. El JWT hace referencia a la aplicación conectada, el usuario para el que se genera la sesión y el nivel de acceso que debe tener el usuario.

Un JWT válido incluye la siguiente información:

  • ID de la aplicación conectada, también conocido como ID de cliente, del paso 1
  • ID secreto y valor secreto generado en el paso 2

  • Notificaciones registradas y encabezado:

    NotificaciónNombreDescripción o valor requerido
    "kid"ID secretoObligatorio (en el encabezado). El ID secreto de la aplicación conectada.
    "iss"EmisorObligatorio (en el encabezado). URI de emisor único que identifica la aplicación de conexión de confianza y su clave de firma.
    "alg"AlgoritmoObligatorio (en el encabezado). Algoritmo de firma JWT. Solo se admite HS256.
    "sub"AsuntoNombre de usuario del usuario de Tableau Server autenticado.
    "aud"AudienciaEl valor debe ser: "tableau"
    "exp"Tiempo de expiración

    Un JWT válido no debe haber caducado. El tiempo de caducidad del JWT debe estar dentro del período de validez máximo configurado. El período de validez máximo se puede configurar mediante el comando tsm vizportal.oauth.connected_apps.max_expiration_period_in_minutes.

    "jti"ID de JWTRequerido como notificación. La notificación de ID de JWT proporciona un identificador único para el JWT y distingue entre mayúsculas y minúsculas.
    "scp"

    Importante: No use "scope".

    ÁmbitoPara insertar flujos de trabajo, los valores admitidos incluyen:

    "tableau:views:embed"
    "tableau:views:embed_authoring" (agregado en Tableau Server 2022.3)
    "tableau:metrics:embed" (Retirada en Tableau Server 2023.3)
    "tableau:ask_data:embed" (Añadido en Tableau Server 2023.1)

    Notas:

    • Los valores deben pasarse como un tipo de lista.
    • Para tableau:views:embed, el ámbito respeta los permisos de los usuarios ya configurados en Tableau Server y permite a los usuarios interactuar con las herramientas en la vista insertada si están disponibles en la vista original.
    • Recomendamos que el código de inserción excluya el parámetro de la barra de herramientas. Para obtener más información, consulte Problemas conocidos (solo para insertar flujos de trabajo) más adelante.

    Para conocer los flujos de trabajo de autorización de la API de REST, consulte Métodos de la API de REST que admiten la autorización JWT.

    Para Flujos de trabajo de la API de metadatos que utilizan la API de REST para la autenticación, el único alcance admitido es tableau:content:read.

Ejemplos de JWT

A continuación, se muestran ejemplos de JWT en lenguajes Java y Python. Los ejemplos de Java y Python utilizan la biblioteca nimbus-jose-jwt y la biblioteca PyJWT, respectivamente.

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

Una vez que haya configurado el JWT, cuando su aplicación externa ejecute el código, generará un token.

Paso 4: Siguientes pasos

Para insertar flujos de trabajo

Una vez que se haya configurado JWT, debe agregar el código de inserción a su aplicación externa. Asegúrese de incluir el JWT válido que configuró en el paso 3 anterior en el componente web al que llama su aplicación externa.

Para obtener más información sobre cómo incorporar contenido de Tableau, consulte una o ambas de las siguientes opciones:

Nota: Para que los usuarios se autentiquen correctamente cuando accedan a contenido incrustado, los navegadores deben estar configurados para permitir cookies de terceros.

Para flujos de trabajo de autorización de API de REST

Una vez configurado el JWT, debe agregar el JWT válido a la solicitud de inicio de sesión de la API de REST para obtener acceso autorizado. Para obtener más información, consulte Alcances del acceso para aplicaciones conectadas.

Para flujos de trabajo de la API de metadatos

Una vez configurado el JWT, debe agregar el JWT válido a la solicitud de inicio de sesión de la API de REST. Para obtener más información, consulte Alcances del acceso para aplicaciones conectadas.

Administrar una aplicación conectada

La página Aplicaciones conectadas es donde puede administrar todas las aplicaciones conectadas para el sitio. Puede realizar tareas como crear, eliminar y deshabilitar aplicaciones conectadas; y revocar o generar nuevos secretos si los secretos existentes ya no son seguros.

  1. Como administrador de servidor o de sitio, inicie sesión en Tableau Server.

  2. En el panel izquierdo, seleccione Configuración > Aplicaciones conectadas.

  3. Seleccione la casilla de verificación junto a la aplicación conectada que desea administrar y realice una o más de las siguientes acciones:

    • Genere un nuevo secreto de acuerdo con la línea de tiempo de rotación especificada por las directivas de seguridad de su organización. Para generar un secreto adicional, haga clic en el nombre de la aplicación conectada y luego haga clic en el botón Generar nuevo secreto. Una aplicación conectada puede tener un máximo de dos secretos. Ambos secretos pueden estar activos al mismo tiempo, no caducan y siguen siendo válidos hasta que se eliminen.

    • Revise los detalles de la aplicación conectada haciendo clic en el nombre de la aplicación conectada para ver cuándo se creó, su ID, proyectos y ámbitos de dominio, y sus secretos.

    • Cambie el ámbito o dominio del proyecto; en el menú Acciones, seleccione Editar. Realice los cambios y haga clic en Actualizar.

      Nota: Si cambia los ámbitos del proyecto o del dominio y el contenido insertado no existe ni en el nuevo proyecto ni en el nuevo dominio, la vista o métrica insertada no se puede mostrar y los usuarios verán un error al acceder al contenido insertado.

    • Elimine un secreto haciendo clic en el nombre de la aplicación conectada. En la página de la aplicación conectada, haga clic en Acciones junto al secreto y seleccione Eliminar. En el cuadro de diálogo confirmación, vuelva a seleccionar Eliminar.

      Nota: Si el secreto de la aplicación conectada está siendo utilizado por una aplicación externa, la vista o métrica insertada no podrá mostrarse después de que se elimine el secreto. Para obtener más información, consulte Efectos de deshabilitar o eliminar una aplicación conectada o eliminar un secreto a continuación.

    • Deshabilite una aplicación conectada; en el menú Acciones, seleccione Deshabilitar. Si la aplicación conectada está siendo utilizada por la aplicación externa, la vista o métrica insertada no se puede mostrar después de deshabilitar la aplicación conectada. Para obtener más información, consulte Efectos de deshabilitar o eliminar una aplicación conectada o eliminar un secreto a continuación.

Efectos de deshabilitar o eliminar una aplicación conectada o eliminar un secreto

Para mostrar una vista insertada o métrica a su usuario a través de una aplicación conectada, es necesario que la aplicación conectada esté habilitada y se genere un secreto. Si la aplicación conectada se está utilizando en su aplicación externa y está deshabilitada o eliminada, o su secreto eliminado o reemplazado, los usuarios recibirán un error al acceder al contenido insertado.

Para evitar este problema, asegúrese de que la aplicación de conexión esté habilitada y que JWT esté usando el valor y el ID secreto correctos.

Nivel de acceso (solo para insertar flujos de trabajo)

Puede seleccionar uno o dos tipos de proyectos al configurar un nivel de acceso de una aplicación conectada. El nivel de acceso controla qué contenido se puede incrustar.

  • Todos los proyectos: Esta opción permite insertar el contenido de todos los proyectos.
  • Un solo proyecto: Esta opción permite insertar solo el contenido del proyecto especificado. Si el proyecto especificado contiene proyectos anidados, la insertación de contenido en esos proyectos anidados no está habilitada.

Reglas de lista de dominios permitidos (solo flujos de trabajo integrados)

La lista de permisos de dominio de la aplicación conectada le permite restringir el acceso al contenido insertado de Tableau a todos los dominios o algunos dominios; o excluir algunos dominios o bloquear todos los dominios.

Opciones de dominio

Puede seleccionar una de las dos opciones al configurar la lista de permisos de dominio de una aplicación conectada:

  • Todos los dominios: como opción predeterminada, esta opción permite el acceso sin restricciones al contenido insertado.
  • Solo dominios específicos: esta opción le brinda la posibilidad de reducir el alcance del acceso al contenido insertado. Si usa esta opción, siga las reglas de formato especificadas en la siguiente sección, Formato de dominio.

Formato de dominio

En el cuadro de texto de la lista de dominios permitidos, puede indicar uno o más dominios usando los ejemplos de formato siguientes.

Nota: Las reglas de formato de dominio también se aplican cuando se utilizan los métodos de la aplicación conectada(El enlace se abre en una ventana nueva) en la API de REST de Tableau.

A continuación, se muestran algunos ejemplos de formato basados en situaciones habituales:

Para especificar...EjemploInsertar acceso
Rango de dominios*.myco.comSe puede acceder al contenido insertado desde todos los subdominios en myco.com.
Todos los puertosmyco.com:*Se puede acceder al contenido insertado desde todos los puertos en myco.com.
Puerto específicomyco.com:8080Se puede acceder al contenido insertado desde el puerto 8080 en myco.com, exclusivamente.
Múltiples dominios discretosmyco.com
events.myco.com
ops.myco.com

Se puede acceder al contenido insertado desde los tres dominios.

Nota: Al especificar varios dominios, escriba cada dominio en una nueva línea o separe los dominios con un espacio. Para la API de REST, los dominios deben estar separados por un espacio.

Solo tráfico segurohttps:Se puede acceder de forma segura al contenido insertado independientemente del dominio.
Tráfico seguro a todos los puertos para una variedad de dominioshttps:*myco.com:*Se puede acceder de forma segura al contenido insertado desde todos los puertos de los subdominios en myco.com.
Sin dominios[no domains]El acceso al contenido insertado está bloqueado.

Problemas conocidos (solo para insertar flujos de trabajo)

Hay un par de problemas conocidos al usar aplicaciones conectadas que se tratarán en una versión futura.

  • Funciones de la barra de herramientas: cuando el contenido incrustado tenga definido el parámetro de la barra de herramientas, no todas las funciones de la barra de herramientas funcionarán. Para solucionar este problema, le recomendamos que oculte el parámetro de la barra de herramientas como en el siguiente ejemplo.

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

  • Fuentes de datos publicadas: las fuentes de datos publicadas que se hayan configurado para Preguntar al usuario las credenciales de la base de datos no se mostrarán. Para solucionar este problema, si es posible, recomendamos a los propietarios de fuentes de datos que incorporen sus credenciales de base de datos.
  • Objetos de Pregunte a los datos en dashboards insertados: Los objetos de Pregunte a los datos en dashboards insertados no se cargarán. (En Tableau Server 2024.2 retirará Pregunte a los datos).

  • Métricas y listas de admisión de dominios: las vistas de métricas integradas se mostrarán a pesar de las restricciones de acceso que pueden especificarse en las listas de permitidos de dominios de las aplicaciones conectadas. Nota: Los datos de métricas a los que se accede desde las barras de herramientas de las vistas insertadas funcionarán como se esperaba. (En Tableau Server 2023.3, Tableau eliminó la capacidad de insertar métricas).

¡Gracias por sus comentarios!Sus comentarios se han enviado correctamente. ¡Gracias!