A incorporação assinada é uma maneira de apresentar Looks, visualizações, Análises, dashboards ou dashboards do LookML incorporados particulares aos usuários sem que eles precisem de um login separado do Looker. Em vez disso, os usuários serão autenticados pelo seu próprio aplicativo.
A incorporação assinada funciona criando um URL especial do Looker que você vai usar em um iframe. O URL contém as informações que você quer compartilhar, o ID do usuário no seu sistema e as permissões que você quer que o usuário tenha. Em seguida, você vai assinar o URL com uma chave secreta fornecida pelo Looker.
Para incorporação pública, consulte a seção Incorporação pública com tags iframe da página de documentação Compartilhamento público, importação e incorporação de Looks.
Para usar a incorporação assinada na sua instância do Looker, um administrador precisa ativar a incorporação assinada no painel Administrador do Looker e criar uma chave secreta de incorporação. Para instruções, consulte a página de documentação Como começar a usar a incorporação: como ativar a incorporação assinada.
Hospedagem adequada para incorporação assinada
Alguns navegadores, como o Safari ou aqueles com extensões instaladas que bloqueiam anúncios ou cookies de rastreamento, têm uma política que bloqueia cookies de terceiros por padrão. Quando o recurso Incorporação sem cookies está ativado, os navegadores que bloqueiam cookies de terceiros podem autenticar usuários no iframe incorporado em diferentes domínios. A autenticação de incorporação sem cookies requer configuração do lado do servidor. Consulte a página de documentação Incorporação sem cookies para ver exemplos de configuração.
Se o recurso Incorporação sem cookies não estiver ativado, o Looker vai usar cookies para autenticar os usuários. Nesse caso, não é possível autenticar o iframe incorporado em vários domínios em navegadores que bloqueiam cookies de terceiros, a menos que o usuário modifique as configurações de privacidade de cookies do navegador. Por exemplo, se você quiser incorporar informações em https://mycompany.com, verifique se o Looker compartilha o mesmo domínio, como https://analytics.mycompany.com. Nesse caso, se o Looker estiver hospedando sua instância, entre em contato com o suporte do Looker para definir a configuração de DNS necessária para ativar o uso de domínios personalizados. Isso permite que o Looker compartilhe o mesmo domínio do aplicativo incorporado e use cookies primários, que são aceitos por padrão em todos os navegadores.
Se você tiver uma instância do Looker hospedada pelo cliente, verifique se o aplicativo que vai usar a incorporação assinada usa o mesmo domínio da instância do Looker.
Como controlar a visibilidade do cliente com um sistema fechado
É comum que, em uma configuração de incorporação assinada, os usuários do Looker apresentem dados aos próprios clientes, mas tenham clientes de empresas ou grupos diferentes que não devem saber uns dos outros. Nesse cenário, para proteger as informações particulares dos seus clientes, recomendamos que você configure o Looker como um sistema fechado, também chamado de instalação multilocatária. Em um sistema fechado, o conteúdo é isolado para impedir que usuários de grupos diferentes saibam uns dos outros. Por isso, recomendamos que você ative a opção Sistema fechado antes de conceder acesso à sua instância a usuários externos.
Para mais informações, consulte as páginas de documentação Como projetar e configurar um sistema de níveis de acesso e Práticas recomendadas de segurança para análises incorporadas.
Como gerar o URL de incorporação assinado
Há várias maneiras de gerar o URL de incorporação assinado. Use um destes métodos:
É possível gerar um URL de incorporação assinado usando a opção Gerar URL de incorporação no menu de três pontos de um painel ou no menu de engrenagem de ações de Análise de um Look ou uma Análise.
Use o endpoint Criar URL de incorporação assinada da API Looker, conforme descrito mais adiante neste documento.
Codifique o URL de incorporação assinado. Para criar o URL correto, você precisa escrever um código para codificar o URL com sua chave secreta e gerar outros itens relacionados à segurança. Encontre vários scripts de exemplo no repositório do GitHub de exemplos de incorporação do Looker. As seções a seguir explicam as informações que você precisa fornecer a esses scripts, além de como criar um URL de incorporação assinado sem usar um script.
Como codificar manualmente o URL de incorporação assinado
Para codificar o URL de incorporação assinado, primeiro colete as informações necessárias do Looker e, em seguida, crie o URL de incorporação assinado.
Como coletar as informações necessárias do Looker
Para começar a criar o URL, determine todas as informações que precisam ser incluídas. Você precisará dos seguintes itens:
Incorporar URL
Recupere o URL do Look, da Análise, da visualização de consulta ou do dashboard que você quer incorporar. Em seguida, remova o domínio e coloque /embed antes do caminho, da seguinte maneira:
| Item | Padrão do URL normal | Incorporar URL |
|---|---|---|
| Look | https://instance_name.looker.com/looks/4 |
/embed/looks/4 |
| Explorar | https://instance_name.looker.com/explore/my_model/my_explore |
/embed/explore/my_model/my_explore |
| Visualização da consulta | https://instance_name.looker.com/explore/my_model/my_explore?qid=1234567890abcdefghij12Os 22 caracteres alfanuméricos que seguem o parâmetro qid= no URL da Análise detalhada compõem o Query.client_id. O valor Query.client_id é uma string exclusiva que representa a consulta e as configurações de visualização.Para incorporar uma visualização de consulta, recupere o valor Query.client_id da visualização de consulta e copie o Query.client_id no URL de incorporação.Use a UI Explorar do Looker para criar uma consulta com uma visualização compatível e copiar o valor Query.client_id do parâmetro qid=. Outra opção é recuperar o Query.client_id com a API Looker, usando o método Get Query, por exemplo. |
/embed/query-visualization/Query.client_id |
| Painel definido pelo usuário | https://instance_name.looker.com/dashboards/1Inclua todos os valores de filtro do painel ocultando os valores de filtro, o parâmetro hide_filter no URL do painel. |
/embed/dashboards/1 |
| dashboard do LookML | https://instance_name.looker.com/dashboards/my_model::my_dashboard |
/embed/dashboards/my_model::my_dashboard |
| Análise conversacional | Para a página de conversas: https://instance_name.looker.com/conversationsPara a página de agentes: https://instance_name.looker.com/agentsPara uma conversa específica: https://instance_name.looker.com/conversations/conversation_idPara mais informações, consulte a página de documentação Como incorporar a análise de conversação. |
/embed/conversations/embed/agents/embed/conversations/c9f370ac830b4669aeb494396422004c |
Permissões
Um conjunto de permissões define o que um usuário ou grupo pode fazer. As permissões podem ser aplicadas de duas maneiras:
- Específica do modelo: esse tipo de permissão é aplicado apenas aos conjuntos de modelos que fazem parte da mesma função.
- Em toda a instância: esse tipo de permissão se aplica à instância do Looker como um todo. Os usuários incorporados com permissões em toda a instância podem executar determinadas funções em toda a instância do Looker, mas não podem acessar conteúdo com base em modelos não incluídos no conjunto de modelos do papel.
Determine as permissões que você quer que o usuário tenha. A lista a seguir mostra todas as permissões disponíveis para incorporação assinada. As permissões que não estão na lista a seguir não são compatíveis com a incorporação assinada:
| Permissão | Depende de | Tipo | Definição |
|---|---|---|---|
access_data |
Nenhum | Específico do modelo | Permite que o usuário acesse dados (necessário para visualizar Looks, painéis ou Análises) |
see_lookml_dashboards |
access_data |
Específico do modelo | Permite que o usuário veja dashboards do LookML. Essa permissão é necessária mesmo que um usuário tenha acesso de visualização à pasta do painel. |
see_looks |
access_data |
Específico do modelo | Permite que o usuário veja os Looks |
see_user_dashboards |
see_looks |
Específico do modelo | Permite que o usuário veja painéis definidos pelo usuário e navegue pelas pastas de uma incorporação. |
explore |
see_looks |
Específico do modelo | Permite que o usuário veja as páginas de Análise |
create_table_calculations |
explore |
Em toda a instância | Necessária para criar cálculos de tabela em uma Análise. |
create_custom_fields |
explore |
Em toda a instância | Necessário para criar campos personalizados em uma Análise. |
can_create_forecast |
explore |
Em toda a instância | Permite que os usuários criem ou editem previsões em visualizações. |
save_content |
see_looks |
Em toda a instância | Permite que o usuário faça e salve mudanças em Looks e painéis |
send_outgoing_webhook |
see_looks |
Específico do modelo | Permite que o usuário programe entregas de conteúdo do Looker para um webhook arbitrário. |
send_to_s3 |
see_looks |
Específico do modelo | Permite que o usuário programe entregas de conteúdo do Looker para um bucket do Amazon S3. |
send_to_sftp |
see_looks |
Específico do modelo | Permite que o usuário programe o envio de conteúdo do Looker para um servidor SFTP. |
schedule_look_emails |
see_looks |
Específico do modelo | Permite que o usuário programe entregas de conteúdo do Looker para o próprio e-mail (se definido com um atributo de usuário chamado "e-mail") ou para um endereço de e-mail que esteja dentro das limitações definidas pela lista de permissões de domínio de e-mail. Permite que o usuário com permissões create_alerts envie notificações de alerta para um endereço de e-mail que esteja dentro das limitações definidas pela lista de permissões de domínio de e-mail. |
schedule_external_look_emails |
schedule_look_emails |
Específico do modelo | Permite que o usuário programe o envio de conteúdo do Looker para qualquer domínio de e-mail. Permite que usuários com permissões create_alerts enviem notificações de alerta para qualquer domínio de e-mail. |
send_to_integration |
see_looks |
Específico do modelo | Permite que o usuário envie conteúdo do Looker para os serviços de terceiros integrados ao Looker pela central de ações do Looker. Essa permissão não está relacionada às ações de dados. |
schedule_without_limit |
see_looks |
Específico do modelo | Adicionado na versão 26.4 Quando combinada com pelo menos uma outra permissão que permite ao usuário enviar conteúdo do Looker, essa permissão permite que os usuários enviem Looks ou Análises que contenham todas as linhas de dados. Essa permissão torna visível a opção Todos os resultados no Programador do Looker para Looks e Análises. |
create_alerts |
see_looks |
Em toda a instância | Permite que o usuário crie alertas nos blocos do painel para receber notificações quando as condições especificadas forem atendidas ou excedidas. Os usuários podem editar, duplicar e excluir os próprios alertas e os alertas públicos de outros usuários. Se o espaço de trabalho do Slack do usuário não estiver conectado à instância do Looker, ele não poderá criar alertas que enviem notificações para o Slack. |
download_with_limit |
see_looks |
Em toda a instância | Permite que o usuário faça o download dos resultados de uma consulta com um limite aplicado |
download_without_limit |
see_looks |
Em toda a instância | Permite que o usuário faça o download dos resultados de uma consulta sem limite aplicado |
see_sql |
see_looks |
Específico do modelo | Permite que o usuário veja o SQL das consultas e os erros de SQL resultantes da execução de consultas |
clear_cache_refresh |
access_data |
Específico do modelo | Os usuários podem limpar o cache e atualizar dashboards incorporados, dashboards legados, blocos de dashboard, Looks e Análises. |
see_drill_overlay |
access_data |
Específico do modelo | Permite que o usuário faça um detalhamento sem precisar acessar a página completa de Análise. |
manage_spaces |
Nenhum | Em toda a instância | Ativa o navegador de conteúdo para que os usuários possam criar, copiar, mover e excluir pastas. Os usuários também precisam da permissão de acesso ao conteúdo Gerenciar acesso, editar para a pasta ou, no caso de criar uma nova pasta, para a pasta mãe. |
embed_browse_spaces |
Nenhum | Em toda a instância |
Ativa o navegador de conteúdo para que um usuário possa navegar pelas pastas de uma incorporação. Qualquer usuário incorporado que receba a permissão embed_browse_spaces tem acesso a uma pasta pessoal incorporada e à pasta Compartilhada da sua organização, se houver uma.
A permissão embed_browse_spaces é recomendada para usuários que têm a permissão save_content, para que eles possam navegar pelas pastas ao selecionar onde salvar o conteúdo.
Para ver o conteúdo nas pastas, o usuário também precisa das permissões see_looks, see_user_dashboards e see_lookml_dashboards.
A permissão embed_browse_spaces é necessária para usuários incorporados que querem marcar painéis ou Looks como favoritos, já que isso exige acesso à pasta Favoritos.
|
embed_save_shared_space |
Nenhum | Em toda a instância |
Permite que o usuário que também tem a permissão save_content navegue até a pasta Compartilhada da organização, se houver, na caixa de diálogo Salvar. Os usuários que têm a permissão save_content, mas não a embed_save_shared_space, só podem salvar conteúdo na pasta de incorporação pessoal.
A permissão embed_save_shared_space não substitui as permissões de acesso ao conteúdo. Por exemplo, para que um usuário possa salvar na pasta Compartilhada, ele ainda precisa de acesso de Gerenciar acesso, Editar à pasta Compartilhada. Além disso, a falta da permissão embed_save_shared_space não impede que um usuário com a permissão save_content e o acesso Gerenciar acesso, editar à pasta Compartilhada salve conteúdo nela se tiver uma maneira alternativa de navegar até a pasta Compartilhada, como usar a opção Explorar daqui em um painel incorporado.
|
gemini_in_looker |
Nenhum | Específico do modelo | Essa é a única permissão incluída no papel padrão do Gemini. Essa permissão permite que os usuários realizem as tarefas associadas a qualquer um dos recursos do Gemini no Looker que estão ativados na página Gemini no Looker no painel de admin Admin. Algumas tarefas podem exigir outras permissões. |
chat_with_agent |
gemini_in_looker |
Específico do modelo | Adição da versão 25.18 Os usuários da Análise Conversacional podem conversar com agentes de dados baseados nos dados de até cinco Análises do Looker ou com agentes de dados de painéis. É necessário ter outras permissões para conversar com os agentes de dados do painel. |
chat_with_explore |
chat_with_agent |
Específico do modelo | Adicionado na versão 25.18 Os usuários da Análise Conversacional podem conversar com uma Análise do Looker quando também têm outras permissões necessárias. |
save_agents |
chat_with_explore |
Específico do modelo | Adicionado em 25.18 Os usuários do Conversational Analytics podem criar, editar, excluir e compartilhar agentes de dados em painéis ou Análises. Para editar, excluir ou compartilhar um agente de dados criado por outro usuário, os usuários precisam receber um papel que contenha essa permissão em todos os modelos usados pelo agente, além de outras permissões necessárias e acesso de Gerenciar acesso, acesso de edição ao agente. |
admin_agents |
gemini_in_looker |
Específico do modelo | Adicionado em 25.18 Para uso com a API Conversational Analytics e a Análise Conversacional incorporada, os usuários podem criar, editar, compartilhar e excluir agentes de dados. Quando um usuário cria um agente de dados, ele recebe automaticamente o acesso de Gerenciar acesso, Editar. Com essa permissão, um usuário não precisa receber acesso ao conteúdo do agente de dados para editar, excluir ou compartilhar um agente de dados criado por outro usuário. |
Acesso ao modelo
Determine quais modelos do LookML o usuário deve acessar. Será uma lista de nomes de modelos.
Atributos do usuário
Determine quais atributos o usuário deve ter, se for o caso. Você vai precisar do nome do atributo de usuário do Looker, bem como do valor que o usuário deve ter para esse atributo.
Grupos
Determine a quais grupos o usuário deve pertencer, se houver. Você vai precisar dos IDs dos grupos, não dos nomes. Adicionar um usuário de incorporação assinada a um grupo do Looker permite gerenciar o acesso desse usuário às pastas do Looker. Os usuários de incorporação assinada terão acesso a todas as pastas compartilhadas com os membros dos grupos do Looker.
Também é possível usar o parâmetro external_group_id para criar um grupo externo aos grupos normais do Looker. Nesse caso, os usuários de incorporação assinada com o mesmo external_group_id terão acesso a uma pasta compartilhada, chamada "Grupo", que é exclusiva do grupo externo.
Papéis incorporados
Os parâmetros permissions e models criam um papel para o usuário de incorporação. Essa função aparece como "Função incorporada" na página Usuários na seção Administrador do Looker. Se os parâmetros permissions, models e group_ids forem especificados no URL de incorporação, o papel incorporado será aditivo a todos os papéis já atribuídos aos grupos listados na lista de grupo do parâmetro group_ids. Isso é igual aos papéis padrão, já que todos os papéis no Looker são cumulativos.
Por exemplo, digamos que você tenha um grupo no Looker com o ID 1, e esse grupo já tenha a permissão explore para um modelo chamado model_one. Você cria um URL de incorporação com os seguintes parâmetros:
group_ids=["1"]permissions=["access_data","see_looks"]models=["model_two"]
Nesse caso, o usuário incorporado vai herdar a capacidade de visualizar e analisar os dados em model_one, e o papel de incorporação criado com os parâmetros anteriores também vai conceder a capacidade de visualizar os dados em model_two.
Como criar o URL de incorporação
Um URL de incorporação assinado tem o seguinte formato:
https://HOST/login/embed/EMBED URL?PARAMETERS&signature=SIGNATURE
Host
O host é o local onde a instância do Looker está hospedada. Por exemplo, analytics.mycompany.com Inclua o número da porta se você não tiver ativado o encaminhamento de portas, como analytics.mycompany.com:9999.
Incorporar URL
O URL de incorporação foi determinado anteriormente. Ele terá um formato como:
/embed/looks/4/embed/explore/my_model/my_explore/embed/query-visualization/Query.client_id/embed/dashboards/1ou/embed/dashboards-legacy/1/embed/dashboards/my_model::my_dashboardou/embed/dashboards-legacy/my_model::my_dashboard
Isso significa que o padrão /embed//embed/ vai aparecer no seu URL final, o que está correto.
Se você estiver usando eventos JavaScript incorporados, adicione o parâmetro embed_domain (o domínio em que o iframe está sendo usado) ao final do URL de incorporação, desta forma:
/embed/looks/4
/embed/looks/4?embed_domain=https://mywebsite.com
O parâmetro embed_domain é adicionado ao URL de incorporação antes da codificação. Se o URL de incorporação já tiver parâmetros de consulta de conteúdo (como valores de filtro), adicione o parâmetro embed_domain usando um "E" comercial (&):
/embed/looks/4?filter_name=value
/embed/looks/4?filter_name=value&embed_domain=https://mywebsite.com
Se você estiver usando o SDK de incorporação, adicione o parâmetro embed_domain e inclua sdk=2 no final do URL de incorporação, desta forma:
/embed/looks/4
/embed/looks/4?embed_domain=https://mywebsite.com&sdk=2
O parâmetro sdk=2 permite que o Looker identifique que o SDK está presente e pode aproveitar os recursos adicionais fornecidos por ele. O SDK não pode adicionar esse parâmetro porque ele faz parte do URL assinado.
Parâmetros
Os seguintes parâmetros de URL são usados para especificar as informações necessárias para a incorporação assinada:
| Parâmetro | Valor padrão | Descrição | Tipo de dados | Exemplo |
|---|---|---|---|---|
nonce |
Valor obrigatório | Qualquer string aleatória que você quiser, mas ela não pode ser repetida em uma hora e precisa ter menos de 255 caracteres.Isso impede que um invasor reenvie o URL de um usuário legítimo para coletar informações que não deveria ter. | String JSON | "22b1ee700ef3dc2f500fb7" |
time |
Valor obrigatório | A hora atual como um carimbo de data/hora do UNIX. | Inteiro | 1407876784 |
session_length |
Valor obrigatório | O número de segundos que o usuário precisa manter a conexão com o Looker, entre 0 e 2.592.000 segundos (30 dias). | Inteiro | 86400 |
external_user_id |
Valor obrigatório | Um identificador para cada usuário no aplicativo que está incorporando o Looker. O Looker usa external_user_id para diferenciar os usuários de incorporação assinada. Por isso, cada usuário precisa ter um ID exclusivo atribuído a ele.É possível criar um external_user_id para um usuário com qualquer string, desde que seja exclusiva para ele. Cada ID está associado a um conjunto de permissões, atributos de usuário e modelos. Um único navegador pode oferecer suporte a apenas um external_user_id ou sessão de usuário por vez. Não é possível fazer mudanças nas permissões ou nos atributos de um usuário no meio da sessão.Por motivos de segurança, não use o mesmo external_user_id em diferentes sessões de incorporação para diferentes usuários interativos e não use o mesmo external_user_id para um único usuário que tenha permissões, valores de atributo de usuário ou acesso ao modelo diferentes.Usar o mesmo external_user_id para Dispositivo compartilhado ou para o mesmo usuário com várias permissões, atributos de usuário ou conjuntos de modelos pode fazer com que os dados fiquem visíveis para usuários que, de outra forma, não teriam acesso a eles. |
String JSON | "user-4" |
permissions |
Valor obrigatório | A lista de permissões que o usuário precisa ter.Consulte a seção Permissões nesta página para ver a lista de permissões permitidas. | Matriz de strings | [ "access_data", "see_looks"] |
models |
Valor obrigatório | A lista de nomes de modelos a que o usuário deve ter acesso. | Matriz de strings | [ "model_one", "model_two"] |
group_ids |
[] | A lista de grupos do Looker de que o usuário deve ser membro, se houver. Use IDs de grupo em vez de nomes de grupo. | Matriz de strings | ["4", "3"] |
external_group_id |
"" | Um identificador exclusivo do grupo ao qual o usuário pertence no aplicativo que está incorporando o Looker.Os usuários que têm permissão para salvar conteúdo e que compartilham um ID de grupo externo podem salvar e editar conteúdo em uma pasta compartilhada do Looker chamada "Grupo". O parâmetro external_group_id é o único método disponível para criar grupos externos de usuários incorporados. Não é possível configurar grupos de usuários de incorporação externa na interface do Looker.O tamanho do external_group_id não pode exceder 81 caracteres. Uma pasta correspondente é criada para o grupo, e os nomes das pastas têm um limite de 100 caracteres. O nome da pasta tem o prefixo "Embed Shared Group ", então o external_group_id é restrito a 81 caracteres para manter o limite de caracteres de 100 ou menos. |
String JSON | "Accounting" |
user_attributes |
{} | A lista de atributos do usuário que o usuário deve ter, se houver. Contém uma lista de nomes de atributos do usuário seguidos pelo valor do atributo.Se o modelo do LookML estiver localizado, use o atributo de usuário locale no URL de incorporação para especificar um idioma. Por exemplo, incluir o parâmetro user_attributes { "locale" : "fr_FR" } faria com que a incorporação carregasse o francês como idioma. |
Hash de strings | { "vendor_id" : "17", "company" : "xactness"} |
access_filters |
Valor obrigatório | No Looker 3.10, esse parâmetro foi removido, mas ainda é obrigatório no URL. Use access_filters com um marcador de posição vazio, por exemplo, access_filters={}. |
Marcador de posição vazio | {} |
first_name |
"" | O nome do usuário. Se deixado em branco, first_name vai manter o valor da última solicitação ou será "Embed" se nenhum nome tiver sido definido. |
String JSON | "Alice" |
last_name |
"" | O sobrenome do usuário. Se deixado em branco, last_name vai manter o valor da última solicitação ou será "Embed" se nenhum sobrenome tiver sido definido. |
String JSON | "Jones" |
user_timezone |
"" | Se você tiver ativado os fusos horários específicos dos usuários, define o valor da opção Fuso horário do visualizador no menu suspenso Fuso horário no Look ou painel incorporado. Esse parâmetro não muda diretamente o fuso horário em que o conteúdo é mostrado. O usuário precisa selecionar um fuso horário no menu suspenso.Confira os valores válidos na página de documentação Referência de fuso horário de incorporação assinada.Dica da equipe do Chat: se você quiser que o conteúdo incorporado use o fuso horário do espectador por padrão, use um dos seguintes métodos:?query_timezone=user_timezone ao URL de incorporação. Exemplo:/embed/dashboards/1?query_timezone=user_timezone |
String JSON ou nulo | "US/Pacific"- ou -null |
force_logout_login |
Valor obrigatório | Se um usuário normal do Looker já estiver conectado ao Looker e visualizar um item incorporado assinado, você poderá escolher se:1) visualizar o item com as credenciais atuais;ou2) Eles precisam sair e fazer login novamente com as credenciais de incorporação assinadas. | Booleano (verdadeiro ou falso). | true |
ca_chat |
true |
Se você tiver ativado a Análise de Conversação e a configuração Agentes do painel, define se o painel de conversa do agente do painel fica visível para os usuários incorporados. Se for true, o ícone de brilho do Gemini |
Booleano (verdadeiro ou falso). | true |
Assinatura
O Looker usa a assinatura para verificar se o secret de incorporação correto foi usado para gerar a assinatura no URL de incorporação e se os parâmetros no URL de incorporação não foram alterados. Se o secret de incorporação ou os parâmetros de URL forem diferentes ou tiverem sido alterados, a assinatura não será correspondente e a autenticação será rejeitada.
Como resultado, a assinatura no URL de incorporação fornece uma prova criptograficamente forte de que o URL de incorporação não foi modificado em trânsito e que foi criado por uma parte confiável que tem a chave secreta de incorporação.
Para gerar a assinatura, siga estas etapas.
- Reúna os seguintes valores de parâmetro nesta ordem:
- Host, seguido por
login/embed/(por exemplo,analytics.mycompany.com/login/embed/) - Incorporar URL
- Valor de uso único
- Hora atual
- Duração da sessão
- ID do usuário externo
- Permissões
- Modelos
- IDs de grupo
- ID do grupo externo
- Atributos do usuário
- Filtros de acesso (requer um marcador de posição vazio)
- Visibilidade do agente de dados do painel de análise de conversação
- Host, seguido por
- Formatar todos os valores, exceto o host e o URL de incorporação, como JSON
- Concatene os valores com quebras de linha (
\n) - Assine a string concatenada com HMAC-SHA1 usando sua chave secreta de incorporação do Looker.
Codificação
A última etapa é codificar o URL.
Antes de codificar o URL, um URL de incorporação formatado corretamente que usa todos os parâmetros possíveis pode ter esta aparência:
https://analytics.mycompany.com/login/embed//embed/dashboards/1?
nonce="22b1ee700ef3dc2f500fb7"&
time=1407876784&
session_length=86400&
external_user_id="user-4"&
permissions=["access_data","see_user_dashboards","see_looks"]&
models=["model_one","model_two"]&
group_ids=[4,3]&
external_group_id="Allegra K"&
user_attributes={"vendor_id":"17","company":"xactness"}&
access_filters={}&
ca_chat=false&
first_name="Alice"&
last_name="Jones"&
user_timezone="US/Pacific"&
force_logout_login=true&
signature=123456789ABCDEFGHIJKL
Como já mencionamos, é correto que /embed//embed/ apareça no seu URL.
Depois de codificar o URL, ele vai ficar assim:
https://analytics.mycompany.com/login/embed/%2embed%2Fdashboards%2F1?
nonce=%2222b1ee700ef3dc2f500fb7&%22&
time=1407876784&
session_length=86400&
external_user_id=%22user-4%22&
permissions=%5B%22access_data%22%2C%22see_user_dashboards%22%2C%22see_looks%22%5D&
models=%5B%22model_one%22%2C%22model_two%22%5D&
group_ids=%5B4%2C3%5D&
external_group_id=%22Allegra%20K%22&
user_attributes=%7B%22vendor_id%22%3A%2217%22%2C%22company%22%3A%22xactness%22%7D&
access_filters%7B%7D%26%0A
ca_chat=false&
first_name=%22Alice%22&
last_name=%22Jones%22&
user_timezone=%22US%2FPacific%22&
force_logout_login=true&
signature=123456789ABCDEFGHIJKL
Como usar o endpoint de API Create Signed Embed Url
A API Looker inclui o endpoint Criar URL de incorporação assinado, que usa um conjunto de parâmetros de incorporação assinados que inclui o URL do conteúdo que você quer incorporar e retorna um URL completo, codificado e assinado criptograficamente.
Para usar esse endpoint de API em um servidor da Web, o servidor precisa ser capaz de se autenticar na API Looker com privilégios de administrador. O domínio do servidor da Web também precisa estar listado na lista de permissões de domínios de incorporação.
Também é possível usar o API Explorer para gerar um URL assinado que use esse endpoint. É possível instalar o API Explorer na sua instância do Looker pelo Marketplace do Looker. Depois de gerado, o URL assinado precisa ser copiado exatamente como está e só pode ser usado uma vez. Caso contrário, ele vai falhar. O APIs Explorer também é útil para gerar um URL assinado e compará-lo a um URL assinado criado manualmente para fins de solução de problemas.
Para mais informações sobre a API Looker, consulte a página de documentação Introdução à API Looker.
Como testar o URL de incorporação
Para testar o URL final, cole-o no Validador de URI de incorporação na página Incorporar da seção Administrador do Looker. Embora essa opção não informe se os dados e as permissões que você planejou foram configurados corretamente, ela pode validar se a autenticação está funcionando.
Práticas recomendadas para incorporar vários iframes com incorporação assinada
Quando você incorpora vários iframes do Looker em uma única página, as solicitações de autenticação simultâneas para o mesmo external_user_id podem causar colisões de provisionamento de usuários, contenção de bloqueio no servidor do Looker ou sessões descartadas. Siga estas práticas recomendadas quando seu aplicativo incorporar vários iframes:
Autentique apenas o primeiro iframe com um URL assinado: ao usar a incorporação assinada com cookies ativados por um domínio personalizado, somente o primeiro iframe na página deve carregar um URL
/login/embed/...assinado. Os iframes seguintes precisam esperar até que o primeiro termine a autenticação e, em seguida, carregar URLs de incorporação não assinados (por exemplo,/embed/dashboards/DASHBOARD_ID) para que herdem o cookie de sessão do primeiro iframe sem executar novamente o provisionamento de usuários. O SDK de incorporação do Looker (@looker/embed-sdk) lida com isso automaticamente após a primeira conexão ser resolvida.Pré-carregar um iframe para estabelecer a sessão: para instanciar uma sessão de usuário incorporada antes de carregar vários iframes, pré-carregue um iframe usando
/embed/preload(ou o método.preload()no SDK de incorporação v2) para estabelecer a sessão o mais rápido possível.Use a navegação no frame em vez de recriar iframes: ao usar o SDK de incorporação v2, é possível navegar em um iframe já instanciado chamando métodos como
connection.loadDashboard(DASHBOARD_ID)ouconnection.loadUrl(EMBED_URL)em vez de criar um novo iframe. Para mais informações, consulte Introdução ao SDK de incorporação.Compartilhar um único
session_reference_tokenna incorporação sem cookies: se você usar a incorporação sem cookies com vários iframes em uma página, consulte as Práticas recomendadas para incorporar vários iframes com a incorporação sem cookies na página Incorporação sem cookies.