A incorporação de Logon único (SSO, na sigla em inglês) é uma maneira de apresentar aparências, visualizações, explorações, painéis ou painéis do LookML incorporados e particulares para seus usuários sem exigir que eles tenham um login separado do Looker. Em vez disso, os usuários serão autenticados por meio de seu próprio aplicativo.
A incorporação de SSO funciona criando um URL especial do Looker que você usará em um iframe. O URL contém as informações que você deseja compartilhar, o ID do usuário em seu sistema e as permissões que você deseja que o usuário tenha. Em seguida, você 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 aparências.
Para você poder usar a incorporação de SSO na sua instância do Looker, um administrador do Looker precisa ativar a incorporação de SSO no painel Administrador do Looker e criar uma chave secreta de incorporação. Para instruções, consulte a página de documentação Primeiros passos na incorporação: como ativar a incorporação de SSO.
Hospedagem adequada para incorporação de SSO
Alguns navegadores, como o Safari ou aqueles com extensões instaladas que bloqueiam anúncios ou cookies de rastreamento, usam uma política de cookies que bloqueia cookies de terceiros. Quando o recurso Incorporação sem cookies está ativado, os navegadores que bloqueiam cookies de terceiros podem autenticar usuários no iframe incorporado em domínios diferentes. A autenticação de incorporação sem cookies exige configuração no servidor. Consulte a página de documentação Incorporação sem cookies para ver exemplos de configuração.
Se o recurso Incorporar sem cookies não estiver ativado, o Looker usará cookies para a autenticação do usuário. Nesse caso, não é possível tentar autenticar o iframe incorporado em domínios que bloqueiam cookies de terceiros (a menos que o usuário modifique as configurações de privacidade do cookie do navegador). Por exemplo, se você quiser incorporar informações em https://mycompany.com
, precisará garantir que o Looker compartilhe 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 e ativar o uso personalizado do domínio. Isso permitirá que a Looker compartilhe o mesmo domínio do aplicativo incorporado e utilize 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 usará a incorporação de SSO usa o mesmo domínio da sua instância do Looker.
Como controlar a visibilidade do cliente com um sistema fechado
É comum em uma configuração de incorporação de SSO os usuários do Looker apresentarem dados aos próprios clientes, ao mesmo tempo que têm clientes de diferentes empresas ou grupos que não deveriam se conhecer. 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 se conheçam. Por isso, recomendamos que você ative a opção Sistema fechado antes de conceder a qualquer usuário externo acesso à sua instância.
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 criar o URL incorporado
Há várias maneiras de criar o URL de incorporação de SSO. Você pode usar um destes métodos:
Use o endpoint de URL
create_sso_embed
da API Looker, conforme descrito mais adiante neste documento.Use o SDK do Looker incorporado.
Codifique o URL de incorporação de SSO. A criação do URL correto exigirá que você escreva o código para que possa codificar corretamente o URL com sua chave secreta e gerar outros itens relacionados à segurança. Você pode encontrar vários exemplos de script no repositório do GitHub de exemplos de SSO do Looker. As seções a seguir explicam as informações que você precisará fornecer para esses scripts e como criar um URL de incorporação de SSO sem usar um script.
Como coletar as informações necessárias do Looker
Como ponto de partida para criar seu URL, primeiro determine todas as informações que precisarão ser incluídas. Você precisará dos seguintes itens:
Incorporar URL
Recupere o URL da visualização, da exploração, da visualização da consulta ou do painel que você quer incorporar. Em seguida, remova o domínio e coloque /embed
antes do caminho, da seguinte maneira:
Item | Padrão de 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=1234567890abcdefghij12 Os 22 caracteres alfanuméricos que seguem o parâmetro qid= no URL de exploração são os 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 seu URL de incorporação.É possível usar 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= ou 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/1 Inclua todos os valores de filtro do painel ou, se ocultar valores de filtro, o parâmetro hide_filter no URL do painel. |
|
Painel legado definido pelo usuário |
https://instance_name.looker.com/ dashboards-legacy/1 |
/embed/dashboards-legacy/1 |
dashboard do LookML | https://instance_name.looker.com/ dashboards/my_model::my_dashboard |
/embed/dashboards/my_model::my_dashboard |
Painel do LookML legado |
https://instance_name.looker.com/ dashboards-legacy/my_model::my_dashboard |
/embed/dashboards-legacy/my_model::my_dashboard |
O conteúdo incorporado sempre reflete a versão de produção do conteúdo. As alterações feitas no Modo de desenvolvimento que afetam o conteúdo e que não foram implantadas na produção não aparecerão em uma incorporação.
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ífico do modelo: esse tipo de permissão é aplicado somente aos conjuntos de modelos que fazem parte do mesmo papel.
- Em toda a instância: esse tipo de permissão se aplica à instância do Looker como um todo. Incorporar usuários com permissões em toda a instância pode executar determinadas funções em toda a instância do Looker, mas não pode acessar conteúdo com base em modelos não incluídos no conjunto de modelos da função.
Determine as permissões que você quer que o usuário tenha. A lista a seguir mostra todas as permissões disponíveis para a incorporação de SSO. As permissões que não estão na lista a seguir não são compatíveis com a incorporação de SSO:
Permissão | Depende | Tipo | Definição |
---|---|---|---|
access_data |
Nenhum | Específico do modelo | Permite que o usuário acesse dados (necessário para visualizar aparências, painéis ou explorações) |
see_lookml_dashboards |
access_data |
Específico do modelo | Permite que o usuário veja os painéis do LookML |
see_looks |
access_data |
Específico do modelo | Permite que o usuário veja a aparência |
see_user_dashboards |
see_looks |
Específico do modelo | Permite que o usuário veja painéis definidos pelo usuário e procure pastas em uma incorporação |
explore |
see_looks |
Específico do modelo | Permite que o usuário veja as páginas "Explorar" |
create_table_calculations |
explore |
Em toda a instância | Necessário para criar cálculos de tabela em uma exploração |
create_custom_fields |
explore |
Em toda a instância | ADDED 22.4 Necessário para criar campos personalizados em uma guia "Explorar" |
can_create_forecast |
explore |
Em toda a instância | ADDED 22.12 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 alterações em Aparências e painéis |
send_outgoing_webhook |
see_looks |
Específico do modelo | Permite que o usuário programe entregas de conteúdo do Looker em um webhook arbitrário. |
send_to_s3 |
see_looks |
Específico do modelo | Permite que o usuário programe envios 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 entregas de conteúdo do Looker em um servidor SFTP |
schedule_look_emails |
see_looks |
Específico do modelo | Permite que o usuário programe envios de conteúdo do Looker para o próprio e-mail (com um atributo do usuário chamado "e-mail") ou para um endereço dentro das limitações definidas pela lista de permissões de domínios 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ínios de e-mail. |
schedule_external_look_emails |
schedule_look_ emails |
Específico do modelo | Permite que o usuário programe entregas de conteúdo do Looker em qualquer domínio de e-mail. Permite que o usuário com permissões create_alerts envie 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 pelo hub de ação do Looker. Essa permissão não está relacionada às ações de dados. |
create_alerts |
see_looks |
Em toda a instância | Permite que o usuário crie alertas em blocos do painel para receber notificações quando as condições especificadas forem atendidas ou excedidas. Os usuários podem editar, duplicar e excluir seus próprios alertas e os alertas de usuários. Se o espaço de trabalho do Slack do usuário não estiver conectado à instância do Looker, o usuário 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 de consultas e todos os erros SQL resultantes da execução de consultas |
clear_cache_refresh |
access_data |
Específico do modelo | ADDED 21.14 Os usuários podem limpar o cache e atualizar painéis incorporados, painéis legados, blocos de painéis, aparências e explorações. |
see_drill_overlay |
access_data |
Específico do modelo | Permite que o usuário faça o detalhamento sem precisar acessar a página "Explorar" completa. |
embed_browse_spaces |
Nenhum | Em toda a instância | Ativa o navegador de conteúdo para que um usuário possa procurar pastas em uma incorporação. Qualquer usuário incorporado com a permissão embed_browse_spaces receberá acesso a uma pasta de incorporação pessoal e à pasta Compartilhado da sua organização, se houver. A permissão embed_browse_spaces é recomendada para usuários com a permissão save_content . Assim, o usuário pode procurar pastas ao selecionar onde salvar o conteúdo. Para ver o conteúdo em pastas, o usuário também precisa ter as permissões see_looks , see_user_dashboards e see_lookml_dashboards . |
embed_save_shared_space |
Nenhum | Em toda a instância |
ADDED 21.4
Permite que o usuário que também tem a permissão save_content navegue até a pasta Compartilhado 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 permissão embed_save_shared_space , só podem salvar o 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 permitir que o usuário salve na pasta Compartilhado, ele ainda precisa ter Acesso para editar e editar na pasta Compartilhado. 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 Compartilhado salvem o conteúdo se tiverem uma maneira alternativa de navegar até a pasta Compartilhado, como usando a opção Explorar a partir daqui em um painel incorporado. |
Acesso ao modelo
Determine a quais modelos do LookML o usuário deve ter acesso. Isso será simplesmente uma lista de nomes de modelos.
Atributos do usuário
Determine quais atributos do usuário devem ter, se houver. Você precisará do nome do atributo do usuário no 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ê precisará dos IDs dos grupos, e não dos nomes deles. Ao adicionar um usuário com incorporação de SSO a um grupo do Looker, você pode gerenciar o acesso dele às pastas do Looker. Os usuários com SSO integrado terão acesso às pastas compartilhadas com os participantes 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 com o SSO incorporado 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 incorporado. Esse papel aparece como um "Papel incorporado" na página Usuários na seção Administrador do Looker. Se todos os parâmetros permissions
, models
e group_ids
forem especificados no URL incorporado, o papel incorporado será aditivo a todos os papéis já atribuídos aos grupos listados no parâmetro group_ids
. É o mesmo que os papéis padrão, em que todos os papéis no Looker são aditivos.
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 incorporado com os seguintes parâmetros:
group_ids
=[1]
permissions
=["access_data","see_looks"]
models
=["model_two"]
Nesse caso, o usuário incorporado herdará a capacidade de visualizar e explorar os dados em model_one
, e o papel de incorporação criado com os parâmetros anteriores também concederá a capacidade de visualizar os dados em model_two
.
Como criar o URL incorporado
Um URL incorporado de SSO tem o seguinte formato:
https://HOST/login/embed/URL DO EMBED?PARAMETERS&signature=SIGNATURE
Host
O host é o local onde sua instância do Looker está sendo 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 incorporado 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/1
ou/embed/dashboards-legacy/1
/embed/dashboards/my_model::my_dashboard
ou/embed/dashboards-legacy/my_model::my_dashboard
Isso significa que o padrão /embed//embed/
será exibido no seu URL final. Está correto.
Se você estiver usando eventos JavaScript incorporados, adicione um embed_domain
(o domínio em que o iframe está sendo usado) ao final do URL incorporado, assim:
/embed/looks/4
/embed/looks/4?embed_domain=https://mywebsite.com
embed_domain
é adicionado depois do URL incorporado e antes de quaisquer parâmetros. Então, se você já tivesse parâmetros, como nonce=626
, a adição de embed_domain
seria:
/embed/looks/4?nonce=626
/embed/looks/4?embed_domain=https://mywebsite.com?nonce=626
Se você estiver usando o SDK incorporado, adicione o embed_domain
e inclua também sdk=2
ao final do URL incorporado, assim:
/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 aproveite os recursos adicionais fornecidos por ele. O próprio SDK não pode adicionar esse parâmetro porque faz parte do URL de SSO assinado.
Parâmetros
Os seguintes parâmetros de URL são usados para especificar as informações necessárias para a incorporação de SSO:
Parâmetro | Valor padrão | Descrição | Tipo de dado | Exemplo |
---|---|---|---|---|
nonce |
Valor obrigatório | Qualquer string aleatória que você quiser, mas 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 deve permanecer conectado ao 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 do SSO incorporado. Portanto, 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 ela seja exclusiva para esse usuário. Cada código é associado a um conjunto de permissões, atributos de usuário e modelos. Um único navegador é compatível com apenas uma external_user_id ou sessão de usuário por vez. Nenhuma alteração pode ser feita nas permissões ou nos atributos de um usuário no meio da sessão.Para fins de segurança, verifique se você não está usando o mesmo external_user_id em diferentes sessões de incorporação para diferentes usuários interativos e se não está usando o mesmo external_user_id para um único usuário com diferentes permissões, valores de atributos de usuário ou acesso ao modelo.Usar o mesmo external_user_id para vários usuários 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 |
String JSON | "user-4" |
permissions |
Valor obrigatório | A lista de permissões que o usuário deve ter. Consulte a seção Permissões nesta página para ver a lista de permissões. |
Matriz de strings | [ "access_data", "see_looks" ] |
models |
Valor obrigatório | A lista de nomes de modelos aos quais o usuário deve ter acesso. | Matriz de strings | [ "model_one", "model_two" ] |
group_ids |
[] | A lista de grupos do Looker que o usuário deve participar, se houver. Use códigos de grupos em vez de nomes de grupos. | Matriz de números inteiros | [4, 3] |
external_group_id |
"" | Um identificador exclusivo do grupo ao qual o usuário pertence no aplicativo que está incorporando o Looker, se você quiser. Os usuários que tiverem permissão para salvar conteúdo e compartilhar um ID de grupo externo poderão salvar e editar o conteúdo em uma pasta compartilhada do Looker chamada "Grupo". |
String JSON | "Accounting" |
user_attributes |
{} | A lista de atributos do usuário que ele precisa ter, se houver. Contém uma lista de nomes de atributo de usuários seguidos pelo valor do atributo de usuário. Se o modelo LookML estiver localizado, será possível usar o atributo de usuário locale no URL de incorporação para especificar um idioma para a incorporação. 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 vazio, por exemplo, access_filters={} . |
Marcador de posição vazio | {} |
first_name |
"" | O nome do usuário. Se deixado em branco, first_name manterá o valor da última solicitação ou será incorporado se nenhum nome tiver sido definido. |
String JSON | "Alice" |
last_name |
"" | O sobrenome do usuário. Se deixado em branco, last_name reterá o valor da última solicitação ou será "incorporado" se nenhum sobrenome tiver sido definido. |
String JSON | "Jones" |
user_timezone |
"" | Se você ativou os Fusos horários específicos do usuário, define o valor da opção Fuso horário de leitor na lista suspensa Fuso horário na aparência ou no painel incorporado. Esse parâmetro não altera diretamente o fuso horário em que o conteúdo é exibido. O usuário precisará selecionar o fuso horário desejado na lista suspensa. Consulte os valores válidos na página de documentação de Referência do fuso horário de incorporação de SSO. Dica da equipe do Chat: se você quiser que o conteúdo incorporado use como padrão o fuso horário do visualizador, use um dos seguintes métodos: ?query_timezone=user_timezone ao URL incorporado. Por exemplo:/embed/dashboards/1?query_timezone=user_timezone |
String JSON ou nula | "US/Pacific" - ou - null |
force_logout_login |
Valor obrigatório | Se um usuário normal do Looker já tiver feito login no Looker e vir um item incorporado de SSO, você poderá escolher: 1) ver o item com as credenciais atuais ou 2) sair e fazer login novamente com as credenciais de SSO. |
Booleano (verdadeiro ou falso) | true |
Assinatura
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 grupos
- ID do grupo externo
- Atributos do usuário
- Filtros de acesso (marcador vazio)
- Host seguido por
- Formatar todos os valores, exceto o URL de host e de incorporação, como JSON
- Concatenar os valores com quebras de linha (
\n
) - HMAC assina a string concatenada com sua chave secreta incorporada do Looker
Codificação
A etapa final é codificar o URL para URL.
Antes de codificar o URL, um URL incorporado incorporado 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={}&
first_name="Alice"&
last_name="Jones"&
user_timezone="US/Pacific"&
force_logout_login=true&
signature=123456789ABCDEFGHIJKL
Conforme observado anteriormente, é correto que /embed//embed/
apareça em seu URL.
Depois de codificar o URL, ele ficaria 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
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_sso_embed_url
A API Looker inclui o endpoint create_sso_embed_url
, que usa um conjunto de parâmetros de incorporação de SSO que inclui o URL do conteúdo que você quer incorporar e retorna um URL de SSO completo, codificado e assinado criptograficamente.
Para usar esse endpoint de API a partir de um servidor da Web, esse servidor precisa fazer a autenticação 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 incorporados.
Você também pode usar a API Explorer para gerar um URL de SSO que usa esse ponto de extremidade. É possível instalar a API Explorer na instância do Looker no Looker Marketplace ou visualizar uma versão pública no Portal do desenvolvedor da Looker. Uma vez gerado, o URL de SSO deve ser copiado exatamente e pode ser usado apenas uma vez; caso contrário, falhará. O API Explorer também é útil para gerar um URL de SSO e compará-lo com um URL de SSO criado manualmente para fins de solução de problemas.
Para mais informações sobre a API Looker, consulte a página de documentação Primeiros passos com a API Looker.
Como testar o URL incorporado
Para testar seu URL final, cole-o no Embed URI Validator na página Incorporar da seção Administrador do Looker. Embora esta opção não possa informar se os dados e as permissões que você deseja visualizar foram configurados corretamente, ela pode validar se a autenticação está funcionando corretamente.