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 personalizadas donde el contenido de Tableau está insertado.

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

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

Cómo funcionan las aplicaciones conectadas

La relación de confianza entre el sitio de Tableau Server y la aplicación personalizada 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 personalizada.

Componentes clave de una aplicación conectada

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

  • Secretos: los secretos son claves compartidas por Tableau y su aplicación personalizada. 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.

Nota: Para habilitar la integración a través de aplicaciones conectadas, Tableau Server debe estar configurado para usar SSL para el tráfico HTTP.

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

  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 personalizada para recuperar el HTML en esa página web.
  2. La aplicación personalizada construye un token de autenticación: la aplicación personalizada 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 una aplicación personalizada y se utiliza para verificar la relación de confianza en un paso posterior.
  3. La aplicación personalizada responde con un token de autenticación: la aplicación personalizada 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 personalizada 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 o de sitio, 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 estos pasos:
    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.

    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 personalizada 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 personalizada 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ón Descripción o valor requerido
    "iss" (emisor) Requerido (en encabezado o como notificación). URI de emisor único que identifica la aplicación de conexión de confianza y su clave de firma.
    "alg" (algoritmo) Requerido (en encabezado o como notificación). Algoritmo de firma JWT. Solo se admite HS256.
    "sub" (sujeto) Nombre de usuario del usuario de Tableau Server autenticado.
    "aud" (audiencia) El valor debe ser: "tableau"
    "exp" (tiempo de caducidad)

    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 JWT) Requerido 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" (ámbito)

    Los valores compatibles incluyen:

    "tableau:views:embed"
    "tableau:metrics:embed"

    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 más adelante.

Ejemplos de JWT

A continuación, se muestran ejemplos de JWT en lenguajes Java y Python.

Java

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

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 personalizada ejecute el código, generará un token.

Paso 4: Inserción de los siguientes pasos

Una vez que se haya configurado JWT, debe agregar el código de inserción a su aplicación personalizada. 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 personalizada.

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, o usar almacenamiento particionado. El almacenamiento particionado está activado de forma predeterminada para Mozilla Firefox y se puede habilitar en los navegadores Google Chrome.

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 políticas 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 personalizada, 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 una aplicación personalizada, 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 personalizada 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.

Reglas de lista de permisos de dominio

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 un dominio, varios dominios o ninguno. La lista de permisos de dominio respeta cualquier formato permitido por el encabezado de las generaciones ancestrales de marco(El enlace se abre en una ventana nueva) del marco de CSP (directiva de seguridad del contenido).

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... Ejemplo Insertar acceso
Rango de dominios *.myco.com Se puede acceder al contenido insertado desde todos los subdominios en myco.com.
Múltiples dominios discretos myco.com
events.myco.com
ops.myco.com
Se puede acceder al contenido insertado desde los tres dominios.
Sin dominios [no domains] El acceso al contenido insertado está bloqueado.

Problemas conocidos

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.
¡Gracias por sus comentarios!