Configurar aplicativos conectados com confiança direta

A partir do Tableau Server versão de 2022.1, os aplicativos conectados ao Tableau permitem uma experiência de autenticação perfeita e segura, facilitando uma relação de confiança explícita entre seu site do Tableau Server e aplicativos externos.

Observações:

  • A funcionalidade de aplicativos conectados, sem interface do usuário, para o Tableau Server ficou disponível no Tableau Server versão 2021.4 através dos métodos do aplicativo conectado(O link abre em nova janela) na API REST do Tableau.
  • Para habilitar a inserção por meio de aplicativos conectados, o Tableau Server deve ser configurado para usar SSL para tráfego HTTP.
  • Para que o token de sessão seja válido, os relógios do aplicativo externo e do servidor que hospeda o aplicativo externo devem ser definidos como Tempo Universal Coordenado (UTC). Se um dos relógios usar um padrão diferente, o aplicativo conectado não será confiável.

Como os aplicativos conectados do Tableau funcionam com confiança direta

A relação de confiança entre o site do Tableau Server e o aplicativo externo é estabelecida e verificada por meio de um token de autenticação no padrão JSON Web Token (JWT), que usa um segredo compartilhado fornecido pelo aplicativo conectado ao Tableau e assinado pelo seu aplicativo externo.

Principais componentes de um aplicativo conectado

Os seguintes componentes do conectado trabalham em conjunto com o JWT em seu aplicativo externo para autenticar usuários e exibir conteúdo inserido.

  • Segredos: os segredos são chaves compartilhadas pelo Tableau e seu aplicativo externo. Eles são usados em assinaturas que formam o JWT. Um segredo é necessário ao usar aplicativos conectados para autenticação de inserção ou autorização da API REST. Os segredos podem ser criados em um aplicativo conectado, não expiram e permanecem válidos até serem excluídos.
  • Lista de permissões de domínio (pastas de trabalho inseridas somente): você pode especificar uma lista de domínios permitidos em cada aplicativo conectado. O conteúdo do Tableau inserido por meio de um aplicativo conectado só é permitido nos domínios especificados. Isso ajuda a garantir que o conteúdo seja exposto nos domínios protegidos e aprovados por sua empresa.
  • Nível de acesso (pastas de trabalho inseridas somente): você pode especificar qual conteúdo pode ser inserido, por meio de um aplicativo conectado, associando um aplicativo conectado a um projeto ou a todos os projetos. Se você especificar um projeto, apenas o conteúdo do projeto selecionado pode ser inserido por meio do aplicativo conectado. Se quiser especificar vários projetos, você deverá usar a API REST do Tableau.

Fluxo de trabalho do aplicativo conectado

Inserindo fluxos de trabalho

O diagrama abaixo ilustra como funciona a autenticação entre seu aplicativo externo (servidor Web e página da Web) e o aplicativo conectado do Tableau.

  1. O usuário visita a página da Web: quando um usuário visita o conteúdo inserido em uma página da Web, ela envia uma solicitação GET ao seu aplicativo externo para recuperar o HTML dela.
  2. O aplicativo externo constrói um token de autenticação: o aplicativo externo constrói um JWT, que contém um segredo do aplicativo conectado (consulte a Etapa 3 abaixo para requisitos JWT adicionais) e o escopo de acesso do usuário para o conteúdo inserido. O segredo é assinado pelo aplicativo externo e é usado para verificação do relacionamento de confiança em uma etapa posterior.
  3. O aplicativo externo responde com token de autenticação: o aplicativo externo responde à página com o JWT na URL do conteúdo inserido chamado pela página da Web.
  4. A página da Web solicita conteúdo do Tableau: com a tentativa de carregar o conteúdo inserido, a página da Web chama a URL do conteúdo inserido, que envia uma solicitação GET ao Tableau.
  5. O Tableau valida o token: o Tableau recebe o JWT e verifica a relação de confiança com o aplicativo personalizado ao identificar o aplicativo externo e o segredo compartilhado usado no JWT. Em seguida, o Tableau cria uma sessão para o usuário. A sessão não apenas respeita os escopos de inserção definidos no JWT, mas também as restrições especificadas no aplicativo conectado, incluindo os domínios e projetos permitidos.
  6. O Tableau retorna o conteúdo com base no contexto de inserção restrito: o conteúdo inserido carrega apenas quando a página está em um domínio permitido e o conteúdo é publicado em um projeto permitido (se aplicável). O usuário autenticado só pode interagir com o conteúdo inserido pelo escopo definido no JWT.

Criar um aplicativo conectado

Etapa 1: criar um aplicativo conectado

Crie um aplicativo conectado na página Configurações do Tableau Server.

  1. Como um administrador de servidor, entre no Tableau Server.

  2. No painel esquerdo, selecione Configurações > Aplicativos conectados.

  3. Clique na seta suspensa do botão Novo aplicativo conectado e selecione Confiança dieta.

    Observação: se você estiver usando o Tableau Server 2023.3 ou anterior, clique no botão Novo aplicativo conectado.

  4. Na caixa de diálogo Criar aplicativo conectado, faça uma das seguintes ações:
    • Para fluxos de trabalho de autorização da API REST (incluindo fluxos de trabalho da API de metadados que usam a API REST para autenticação), na caixa de texto Nome do aplicativo conectado, insira um nome para o aplicativo conectado e clique no botão Criar.

      Observação: você pode ignorar o nível de acesso e a lista de permissões de domínio ao configurar um aplicativo conectado para autorização para API REST e API de metadados.

    • Para inserir fluxos de trabalho, faça o seguinte:

      1. Na caixa de texto Nome do aplicativo conectado, insira um nome para o aplicativo conectado.
      2. No menu suspenso Aplica-se a, selecione Todos os projetos ou Apenas um projeto para controlar quais exibições ou métricas podem ser inseridas. Se você selecionar a opção "Somente um projeto", selecione o projeto específico para o escopo. Para obter mais informações sobre essas duas opções, consulte Nível de acesso (somente para inserir fluxos de trabalho) .

        Observações: 

      3. Na lista de permissões de Domínio, especifique os domínios usando as regras descritas em Formatação de domínio abaixo para controlar onde as exibições ou métricas podem ser inseridas.

        Importante: recomendamos usar a lista de permissões de domínio como prática recomendada de segurança para garantir que o conteúdo do Tableau seja inserido apenas nos locais permitidos.

      4. Quando terminar, clique no botão Criar.

  5. Ao lado do nome dos aplicativos conectados, clique no menu de ações e selecione Ativar. Por motivos de segurança, um aplicativo conectado é definido como desabilitado por padrão quando criado.

  6. Anote a ID do aplicativo conectado, também conhecido como ID do cliente, para usar na Etapa 3 abaixo.

Etapa 2: gerar um segredo

Você pode gerar um total de dois segredos para cada aplicativo conectado. O segundo segredo pode ser usado para fins de rotação de segredos, para ajudar a proteger contra problemas se um segredo for comprometido.

  1. Na página de detalhes do aplicativo conectado que você criou na Etapa 1, clique no botão Gerar novo segredo.

  2. Anote a ID secreta e o valor secreto para usar na Etapa 3 abaixo.

Etapa 3: configurar o JWT

Depois de gerar um segredo, você deseja habilitar seu aplicativo externo para enviar um JWT válido. O JWT é um padrão usado para transferir informações com segurança entre duas partes. O JWT é assinado pelo seu aplicativo externo para enviar informações com segurança ao Tableau Server. O JWT faz referência ao aplicativo conectado, ao usuário para o qual a sessão está sendo gerada e ao nível de acesso que o usuário deve ter.

Um JWT válido inclui as seguintes informações:

  • ID do aplicativo conectado, também conhecido como ID do cliente, da Etapa 1
  • ID secreta e valor secreto gerado na Etapa 2

  • Reivindicações registradas e cabeçalho:

    ReivindicaçãoNomeDescrição ou valor obrigatório
    "kid "ID secretaObrigatório (no cabeçalho). O identificador de chave secreto do aplicativo conectado.
    "iss "EmissorObrigatório (no cabeçalho). URI de emissor exclusivo que identifica o aplicativo de conexão confiável e a chave de assinatura.
    "alg "AlgoritmoObrigatório (no cabeçalho). Algoritmo de assinatura JWT. Apenas HS256 é compatível.
    "sub "AssuntoNome de usuário do usuário autenticado do Tableau Server.
    "aud "PúblicoO valor deve ser: "tableau"
    "exp "Data de validade Um JWT válido não deve ter expirado. O tempo de expiração (em UTC) do JWT deve estar dentro do período de validade máximo configurado O período máximo de validade pode ser configurado usando o comando tsm vizportal.oauth.connected_apps.max_expiration_period_in_minutes.
    "jti "ID do JWTNecessário como uma declaração. A declaração JWT ID fornece um identificador exclusivo para o JWT e diferencia maiúsculas de minúsculas.
    "scp "

    Importante: não use "scope".

    EscopoPara fluxos de inserir pastas de trabalho, os valores com suporte incluem:

    "tableau:views:embed "
    tableau:views:embed_authoringAdicionado no Tableau Server 2022.3
    "tableau:metrics:embed" (Descontinuado no Tableau Server 2023.3)
    tableau:ask_data:embed” (Adicionado no Tableau Server 2023.1)

    Observações:

    • Os valores devem ser passados como um tipo de lista.
    • Para tableau:views:embed e tableau:views:embed_authoring, o escopo respeita as permissões dos usuários já configuradas no Tableau Server e permite que eles interajam com as ferramentas na exibição inserida, se disponível na exibição original.
    • Recomendamos que o código de inserção exclua o parâmetro da barra de ferramentas. Para obter mais informações, consulte Problemas conhecidos (somente para inserir fluxos de trabalho) abaixo.

    Para fluxos de trabalho de autorização da API REST, consulte Métodos da API REST que dão suporte à autorização JWT.

    Para Fluxos de trabalho da API de metadados que usam a API REST para autenticação, o único escopo aceito é tableau:content:read.

    https://tableau.com/groups Para fluxos de trabalho inseridos somente.

    O valor deve corresponder ao nome de um ou mais grupos no Tableau Server. Para obter mais informações, consulte a seção Associação dinâmica a grupos (apenas fluxos de trabalho inseridos) abaixo.

JWTs de exemplo

Aqui estão exemplos de JWTs nas linguagens Java e Python. Os exemplos Java e Python usam a biblioteca nimbus-jose-jwt e a 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
        }
  )

Depois de configurar o JWT, quando o código for executado pelo aplicativo externo, ele gerará um token.

Etapa 4: próximas etapas

Para inserir fluxos de trabalho

Após a configuração do JWT, você deve adicionar o código de inserção ao seu aplicativo externo. Certifique-se de incluir o JWT válido que você configurou na Etapa 3 acima no componente da Web chamado pelo aplicativo externo.

Para obter mais informações sobre a inserção de conteúdo do Tableau, consulte um ou ambos os itens a seguir:

Observação: para que os usuários se autentiquem com êxito, ao acessar o conteúdo incorporado, os navegadores devem ser configurados para permitir cookies de terceiros.

Para fluxos de trabalho de autorização da API REST

Após a configuração do JWT, você deve adicionar o JWT válido à solicitação de login da API REST para acesso autorizado. Para obter informações, consulte Escopos de acesso para aplicativos conectados.

Para obter os fluxos de trabalho da API de metadados

Após a configuração do JWT, você deve adicionar o JWT válido à solicitação de login da API REST. Para obter informações, consulte Escopos de acesso para aplicativos conectados.

Gerenciar um aplicativo conectado

A página de aplicativos conectados é onde você pode gerenciar todos os aplicativos conectados para o seu site. Você pode realizar tarefas como criar, excluir e desabilitar aplicativos conectados, bem como revogar ou gerar novos segredos se os segredos existentes tiverem sido comprometidos.

  1. Como um administrador de servidor, entre no Tableau Server.

  2. No painel esquerdo, selecione Configurações > Aplicativos conectados.

  3. Marque a caixa de seleção ao lado do aplicativo conectado que deseja gerenciar e execute um ou mais dos seguintes procedimentos:

    • Gere um novo segredo de acordo com a linha do tempo de rotação especificada pelas políticas de segurança da sua organização. Para gerar um segredo adicional, clique no nome do aplicativo conectado e, em seguida, clique no botão Gerar novo segredo. Um aplicativo conectado pode ter no máximo dois segredos. Ambos os segredos podem estar ativos ao mesmo tempo, não expiram e permanecem válidos até serem excluídos.

    • Revise os detalhes do aplicativo conectado clicando no nome do aplicativo conectado para ver quando o aplicativo conectado foi criado, seu ID, escopos de projeto e domínio e seus segredos.

    • Altere o escopo ou domínio do projeto, no menu Ações, selecione Editar. Faça as alterações e clique em Atualizar.

      Observação: se você alterar os escopos do projeto ou domínio e o conteúdo inserido não existir no novo projeto ou no novo domínio, a exibição ou métrica inserida não poderá ser exibida, e os usuários verão um erro ao acessar o conteúdo inserido.

    • Exclua um segredo clicando no nome do aplicativo conectado. Na página do aplicativo conectado, clique em Ações ao lado do segredo e selecione Excluir. Na caixa de diálogo de confirmação, selecione Excluir novamente.

      Observação: se o segredo do aplicativo conectado estiver sendo usado por um aplicativo externo, a exibição ou métrica inserida não poderá ser exibida depois que o segredo for excluído. Para obter mais informações, consulte Efeitos da desativação ou exclusão de um aplicativo conectado ou exclusão de um segredo abaixo.

    • Desative um aplicativo conectado, no menu Ações, selecione Desativar. Se o aplicativo conectado estiver sendo usado por um aplicativo externo, um exibição ou métrica inserida não poderá ser exibida depois que o aplicativo conectado for desativado. Para obter mais informações, consulte Efeitos da desativação ou exclusão de um aplicativo conectado ou exclusão de um segredo abaixo.

Efeitos da desativação ou exclusão de um aplicativo conectado ou exclusão de um segredo

Para exibir conteúdo inserido ao seu usuário ou ativar o acesso à API RES por meio de um aplicativo conectado, o aplicativo conectado deve ser ativado e seu segredo gerado. Se o aplicativo conectado estiver sendo usado em seu aplicativo externo e for desativado ou excluído, ou seu segredo excluído ou substituído, os usuários receberão um erro 403.

Para evitar esse problema, certifique-se de que o aplicativo de conexão esteja habilitado, e o JWT esteja usando o ID secreto e o valor corretos.

Nível de acesso (somente para inserir fluxos de trabalho)

Você pode selecionar um dos dois tipos de projeto ao configurar o nível de acesso de um aplicativo conectado. O nível de acesso controla qual conteúdo pode ser inserido.

  • Todos os projetos: esta opção permite que o conteúdo de todos os projetos seja inserido
  • Apenas um projeto: esta opção permite que apenas o conteúdo do projeto especificado seja inserido. Se o projeto especificado contiver projetos aninhados, a inserção de conteúdo nesses projetos aninhados não será habilitada.

Sobre vários projetos

A partir do Tableau Server 2024.2 , você poderá habilitar o conteúdo em vários projetos para um aplicativo conectado usando somente a API REST do Tableau. Para especificar quais projetos, use as “IDs do projeto” nos métodos Criar um aplicativo conectado(O link abre em nova janela) ou Atualizar um aplicativo conectado(O link abre em nova janela).

Observação: quando vários projetos são configurados para seu aplicativo conectado, o Tableau exibe Vários projetos para o nível de acesso do aplicativo conectado. Se você selecionar Apenas um projeto ou Todos os projetos e atualizar o aplicativo conectado, a opção “Vários projetos” não estará mais visível. Se precisar configurar o aplicativo conectado para vários projetos novamente, você deverá usar a API REST.

Regras de lista de permissões de domínio (somente para inserir fluxos de trabalho)

A lista de permissões de domínio do aplicativo conectado permite que você restrinja o acesso ao conteúdo inserido do Tableau a todos os domínios ou alguns domínios; ou exclua alguns domínios ou bloqueie todos os domínios.

Importante: recomendamos usar a lista de permissões de domínio como prática recomendada de segurança para garantir que o conteúdo do Tableau seja inserido apenas nos locais permitidos.

Opções de domínio

Você pode selecionar uma das duas opções ao configurar a lista de permissões de domínio de um aplicativo conectado:

  • Todos os domínios: como opção padrão, ela permite acesso irrestrito ao conteúdo inserido.
  • Apenas domínios específicos: esta opção oferece a capacidade de reduzir o escopo do acesso ao conteúdo inserido. Se você usar esta opção, siga as regras de formatação especificadas na seção a seguir, Formatação de domínio.

Formatação de domínio

Na caixa de texto da lista de domínios permitidos, você pode inserir um ou mais domínios usando os exemplos de formatação abaixo.

Observação: as regras de formatação de domínio também se aplicam ao usar os métodos de Aplicativo conectado(O link abre em nova janela) na API REST do Tableau.

Aqui estão alguns exemplos de formatação com base em cenários comuns:

Para especificar...ExemploAcesso de inserção
Intervalo de domínios*.myco.comO conteúdo inserido pode ser acessado em todos os subdomínios em myco.com.
Todas as portasmyco.com:*O conteúdo inserido pode ser acessado de todas as portas em myco.com.
Porta específicamyco.com:8080O conteúdo inserido pode ser acessado pela porta 8080 somente em myco.com.
Múltiplos domínios discretosmyco.com
events.myco.com
ops.myco.com

O conteúdo inserido pode ser acessado em todos os três domínios.

Observação: ao especificar vários domínios, digite cada domínio em uma nova linha ou separe os domínios com um espaço. Para a API REST, os domínios precisam ser separados por um espaço.

Somente tráfego segurohttps:O conteúdo inserido pode ser acessado com segurança, independentemente do domínio.
Tráfego seguro para todas as portas para vários domínioshttps:*myco.com:*O conteúdo inserido pode ser acessado com segurança de todas as portas em todos os subdomínios em myco.com.
Sem domínios[sem domínios]O acesso ao conteúdo inserido está bloqueado.

Associação dinâmica a grupos (apenas fluxos de trabalho inseridos)

A partir de Tableau Server 2024.2, se os aplicativos conectados estiverem configurados e a configuração do recurso estiver habilitada, você poderá controlar dinamicamente a associação ao grupo por meio de declarações personalizadas incluídas no JWT enviado pelo aplicativo externo.

Quando configurado, durante a autenticação do usuário, o aplicativo externo envia o JWT que contém duas declarações personalizadas para associação ao grupo: grupo (https://tableau.com/groups) e nomes de grupos (por exemplo, "Grupo1" e "Grupo2") para inserir o usuário. O Tableau valida o JWT e, em seguida, permite o acesso aos grupos e ao conteúdo cujas permissões dependem desses grupos.

Para obter mais informações, consulte Associação dinâmica a grupos usando asserções.

Problemas conhecidos (somente para inserir fluxos de trabalho)

Existem alguns problemas conhecidos no uso de aplicativos conectados que serão abordados em uma versão futura.

  • Recursos da barra de ferramentas: quando o conteúdo incorporado tem o parâmetro da barra de ferramentas definido, nem todos os recursos da barra de ferramentas funcionarão. Para contornar esse problema, recomendamos que você oculte o parâmetro da barra de ferramentas como no exemplo abaixo.

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

  • Fontes de dados publicadas: as fontes de dados publicadas definidas como Solicitar usuário, para obter credenciais do banco de dados, não serão exibidas. Para contornar esse problema, se possível, recomendamos que os proprietários da fonte de dados incorporem suas credenciais de banco de dados.

  • Exibições inseridas em vários sites: no Tableau Server 2023.1 e versões anteriores, alternar entre exibições em sites diferentes no mesmo navegador causa erro 1008: não foi possível buscar o segredo para o aplicativo de conexão. Para contornar esse problema, atualize para o Tableau Server 2023.3 ou posterior.
  • Objetos Pergunte aos dados em painéis inseridos: os objetos Pergunte aos dados em painéis inseridos não serão carregados. (Em O Tableau Server 2024.2 descontinuará o Pergunte aos dados.)

  • Métricas e listas de permissão de domínio: as visualizações de métricas inseridas serão exibidas apesar das restrições de acesso que podem ser especificadas nas listas de permissão de domínio dos aplicativos conectados. Observação: os dados de métricas acessados em barras de ferramentas de exibições inseridas funcionarão conforme o esperado. (Em Tableau Server 2023.3, o Tableau retirou a capacidade de incorporar métricas.)

Solução de problemas

Você pode consultar Solução de problemas de aplicativos conectados- Confiança direta para erros que podem estar associados ao aplicativo conectado e etapas de solução de problemas sugeridas.

Agradecemos seu feedback!Seu feedback foi enviado. Obrigado!