Incorporação do Logon único (SSO)

Entre em contato com seu gerente de contas do Looker se quiser usar esses recursos.

A incorporação de Logon único (SSO) é uma maneira de apresentar aparências, visualizações, explorações, painéis ou painéis LookML particulares aos usuários sem exigir que eles tenham um login separado do Looker. Em vez disso, os usuários serão autenticados com seu próprio aplicativo.

A incorporação de SSO cria um URL especial do Looker que você 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 ele tenha. Em seguida, você assinará o URL com uma chave secreta fornecida pelo Looker.

Para fazer a 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.

Hospedagem adequada para incorporação de SSO

Alguns navegadores (por exemplo, Safari ou navegadores com extensões de bloqueio de anúncios ou de rastreamento instaladas) têm como padrão uma política de cookies que bloqueia cookies de terceiros. Como o Looker usa cookies para autenticação do usuário, não é possível autenticar o iframe incorporado em domínios diferentes nesses navegadores (a menos que o usuário modifique as configurações de privacidade de 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.

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 do domínio personalizado. Assim, o Looker poderá compartilhar o mesmo domínio que o aplicativo incorporado e usar cookies primários, que são aceitos por padrão em todos os navegadores. Abra uma solicitação de suporte na Central de Ajuda do Looker e clique em Fale conosco.

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 que sua instância do Looker.

Controlar a visibilidade de clientes com um sistema fechado

É comum em uma configuração de incorporação do SSO para que os usuários do Looker apresentem dados para seus próprios clientes, tendo clientes de diferentes empresas ou grupos que não devem conhecer uns aos outros. Nesse cenário, para proteger as informações particulares dos clientes, é altamente recomendável configurar o Looker como um sistema fechado, também chamado de instalação multilocatária. Em um sistema fechado, o conteúdo é isolado para evitar que usuários de diferentes grupos conheçam uns aos outros. Por esse motivo, recomendamos que você ative a opção Sistema fechado antes de conceder a usuários externos 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álise incorporada.

Gerando a chave secreta do Looker

Para validar se uma solicitação de incorporação de SSO é legítima e não foi forjada por outra pessoa, primeiro você precisa gerar um "secret secreto&&;t; Para fazer isso, siga estas etapas:

  1. Acesse a página Incorporar na seção Administrador do Looker.
  2. Selecione Enabled (Ativado) na lista suspensa Embed SSO Authentication e clique em Update.
  3. Clique no botão Redefinir secret para gerar o secret incorporado. Copie esse secret para um local seguro, porque não será possível recuperá-lo do Looker novamente sem redefini-lo. A redefinição da chave interromperá todas as incorporações que usaram a chave antiga.

Qualquer pessoa com acesso à chave secreta pode criar um URL para acessar qualquer modelo a que a instância do Looker esteja conectada, como qualquer usuário, com qualquer permissão. Proteja a chave secreta de incorporação do SSO como você faria com as credenciais de administrador da sua instância incorporada do Looker e mantenha a incorporação de SSO desativada se não estiver usando.

Como criar o URL incorporado

A criação do URL adequado exigirá que você escreva o código, para que possa codificar corretamente o URL com a chave secreta e gerar outros itens relacionados à segurança. Você pode encontrar diversos scripts de amostra no nosso repositório do GitHub de exemplos de SSO. As seções a seguir explicam as informações que você precisará fornecer a esses scripts.

Coleta das informações necessárias do Looker

Como ponto de partida para criar o URL, primeiro determine todas as informações que precisam ser incluídas. Você precisará dos seguintes itens:

URL incorporado

Recupere o URL do recurso "Olhar", "Explorar", "Visualização de consulta" ou "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 URL incorporado
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 "Explorar" formam o Query.client_id. O valor Query.client_id é uma string única 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 IU Explorar do Looker para criar uma consulta com uma visualização compatível e copie o valor Query.client_id do parâmetro qid= ou recupere 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
/embed/dashboards/1
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 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 um 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 do 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 de Tipo Definição
access_data Nenhum Específico do modelo Permite que o usuário acesse dados (obrigatórios para visualizar visuais, 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 Permitir que o usuário veja os visuais
see_user_dashboards see_looks Específico do modelo Permite que o usuário veja painéis definidos pelo usuário e procure pastas de uma incorporação
explore see_looks Específico do modelo Permite que o usuário veja as páginas do Explorar
create_table_calculations explore Para toda a instância É necessário criar cálculos da tabela em um recurso Explorar.
create_custom_fields explore Para toda a instância ADDED 22.4 Necessário para criar campos personalizados em um Explorar
can_create_forecast explore Para toda a instância ADDED 22.12 Permite que os usuários criem ou editem estimativas em visualizações.
save_content see_looks Para toda a instância Permitir 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 painéis e aparências para um webhook arbitrário
send_to_s3 see_looks Específico do modelo Permite que o usuário programe painéis e visuais para um bucket do Amazon S3
send_to_sftp see_looks Específico do modelo Permite que o usuário programe painéis e visuais para um servidor SFTP
schedule_look_emails see_looks Específico do modelo Permite que os painéis de programação do usuário e sejam enviados para um e-mail próprio (definido com um atributo do usuário chamado "email") ou 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. 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 agende painéis e pareça ser enviado a qualquer 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 aos serviços de terceiros integrados ao Looker por meio do Hub de ação do Looker. Essa permissão não está relacionada a ações de dados.
create_alerts see_looks Para 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 outros alertas de usuários # Público. 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 Para toda a instância Permite que o usuário faça o download dos resultados da consulta com um limite aplicado
download_without_limit see_looks Para 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 para consultas e qualquer erro SQL resultante 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 painel, 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 Para 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 com uma permissão embed_browse_spaces receberá acesso a uma pasta de incorporação pessoal e à pasta Compartilhado da sua organização, se houver uma.

A permissão embed_browse_spaces é recomendada para usuários que tenham a permissão save_content. Assim, o usuário pode procurar pastas ao selecionar onde salvar conteúdo.

Para ver o conteúdo em pastas, o usuário também precisa das permissões see_looks, see_user_dashboards e see_lookml_dashboards.
embed_save../_shared_space Nenhum Para 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 do save_content, mas não a permissão do embed_save_shared_space, só terão a opção de salvar conteúdo na pasta de incorporação pessoal.

A permissão do 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 Shared, ele ainda precisa de acesso para Gerenciar acesso 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 conteúdo lá se ele tiver uma maneira alternativa de navegar até a pasta Compartilhado, como ao usar a opção Explorar daqui em um painel incorporado.

Acesso ao modelo

Determine a quais modelos LookML o usuário 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 de usuário do Looker, bem como do valor que o usuário deve ter para o atributo.

Grupos

Determine a quais grupos o usuário pertence, se houver. Você precisará de um ID de grupo em vez de nomes de grupos. Adicionar um usuário com incorporação de SSO a um grupo do Looker permite gerenciar o acesso desse usuário a pastas do Looker. Os usuários com SSO incorporado terão acesso a qualquer pasta compartilhada 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 incorporados ao SSO com o mesmo external_group_id terão acesso a uma pasta compartilhada chamada "quot;Group"" 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 "Papel incorporado" na página Usuários na seção Administrador do Looker. Se 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. Isso é 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 de grupo 1, e esse grupo já tem a permissão explore para um modelo chamado model_one e você crie um URL incorporado com os seguintes parâmetros:

  • group_ids = [1]
  • permissions = ["access_data","see_looks"]
  • models = ["model_two"]

Nesse caso, o usuário de incorporação 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 INCLUDE?PARAMETERS&signature=SIGNATURA

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.

URL incorporado

O URL incorporado foi determinado anteriormente. O formato dele é este:

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

Se você estiver usando eventos JavaScript incorporados, adicione um embed_domain (o domínio onde o iframe está sendo usado) ao final do URL incorporado, desta forma:

/embed/looks/4
/embed/looks/4?embed_domain=https://mywebsite.com

O parâmetro embed_domain é adicionado depois do URL incorporado e antes de qualquer parâmetro. Dessa forma, se você tivesse parâmetros, como nonce=626, a adição de embed_domain seria assim:

/embed/looks/4?nonce=626
/embed/looks/4?embed_domain=https://mywebsite.com?nonce=626

Se você estiver usando o SDK incorporado, adicione embed_domain e também inclua sdk=2 no final do URL incorporado, da seguinte 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 pelo SDK. O SDK não pode adicionar este parâmetro por fazer 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 do SSO:

Parâmetro Valor obrigatório? Descrição Tipo de dado Exemplo
nonce Yes Qualquer string aleatória de sua preferência, mas não pode ser repetida em uma hora e precisa ter menos de 255 caracteres.

Isso impede que um invasor reenvie um URL de um usuário legítimo para coletar informações que não deveria ter.
String JSON "22b1ee700ef3dc2f500fb7"
time Yes A hora atual como um carimbo de data/hora UNIX. Inteiro 1407876784
session_length Yes 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 Yes Um identificador para cada usuário no aplicativo que está incorporando o Looker. O Looker usa external_user_id para diferenciar usuários de incorporação de SSO. Portanto, cada usuário precisa ter um ID exclusivo atribuído a ele.

Você pode criar um external_user_id para um usuário com qualquer string de sua preferência, desde que ele seja exclusivo para esse usuário. Cada ID está associado a um conjunto de permissões, atributos do usuário e modelos. Um único navegador é compatível com apenas uma sessão do external_user_id ou 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 sessões de incorporação diferentes para usuários interativos diferentes e se não está usando o mesmo external_user_id para um único usuário com permissões, valores de atributos ou acesso ao modelo diferentes.

Usar o mesmo external_user_id para vários usuários ou para o mesmo usuário com várias permissões, atributos ou atributos do usuário pode
String JSON "user-4"
permissions Yes 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.
Matriz de strings [
  "access_data",
  "see_looks"
]
models Yes A lista de nomes de modelos a que o usuário deve ter acesso. Matriz de strings [
  "model_one",
  "model_two"
]
group_ids No A lista de grupos do Looker dos quais o usuário deve ser membro, se houver. Use IDs de grupos em vez de nomes de grupos. Matriz de números inteiros [4, 3]
external_group_id No Se quiser, um identificador exclusivo do grupo do usuário que faz parte do aplicativo que está incorporando o Looker.

Os usuários que têm permissão para salvar conteúdo e compartilhar um ID de grupo externo podem salvar e editar o conteúdo em uma pasta compartilhada do Looker chamada "Group.".
String JSON "Accounting"
user_attributes No A lista de atributos do usuário que ele deve ter, se houver. Contém uma lista de nomes de atributos do usuário seguidos pelo valor do atributo do usuário.

Se o modelo LookML estiver localizado, use 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 carregue o francês como idioma.
Hash de strings {
  "vendor_id" : "17",
  "company" : "xactness"
}
access_filters Yes 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 No O nome do usuário. Se deixado em branco, first_name manterá o valor da última solicitação ou será "Embed" se nenhum nome tiver sido definido. String JSON "Alice"
last_name No O sobrenome do usuário. Se deixado em branco, last_name manterá o valor da última solicitação ou será "Embed" se nenhum sobrenome tiver sido definido. String JSON "Jones"
user_timezone No Se você ativou os fusos horários específicos do usuário, define o valor da opção Fuso horário de visualização no menu suspenso Fuso horário no Look ou no painel incorporado. Esse parâmetro não muda diretamente o fuso horário em que o conteúdo é exibido. O usuário precisará selecionar o fuso horário desejado no menu suspenso.

Veja os valores válidos na página de documentação Referência do fuso horário de incorporação do SSO.

Dica da equipe do Chat: se quiser que o conteúdo incorporado use como padrão o fuso horário do espectador, use um dos seguintes métodos:

  • Adicione o parâmetro ?query_timezone=user_timezone ao URL de incorporação. Por exemplo:

    /embed/dashboards/1?query_timezone=user_timezone
  • Salve o painel incorporado ou "Olhar" com o fuso horário padrão definido como Fuso horário de leitor, que usará o fuso horário do usuário por padrão para usuários incorporados e não incorporados.
  • String JSON ou nula "US/Pacific"

    - ou -

    null
    force_logout_login Yes Se um usuário normal do Looker já estiver conectado ao Looker e vir um item incorporado de SSO, será possível escolher se:

    1) ele deve ver o item com as credenciais atuais

    ou

    2) ele precisa sair e fazer login novamente com as credenciais de SSO.
    Booleano (verdadeiro ou falso) true

    Todos os parâmetros anteriores são obrigatórios, mas qualquer parâmetro com "quo" na Por exemplo, você pode usar group_ids [] ou user_attributes {}.

    Assinatura

    Para gerar a assinatura, você precisa seguir estas etapas.

    1. Reúna os seguintes valores de parâmetro nesta ordem:
      • Host, seguido por login/embed/ (por exemplo, analytics.mycompany.com/login/embed/)
      • URL incorporado
      • Valor de uso único
      • Hora atual
      • Duração da sessão
      • ID do usuário externo
      • Permissões
      • Modelos
      • IDs de grupos
      • Código do grupo externo
      • Atributos do usuário
      • Filtros de acesso (exige um marcador vazio)
    2. Formatar todos os valores diferentes de "Host" e "Incorporar URL" como JSON
    3. Concatenar os valores com quebras de linha (\n)
    4. Assinar a string concatenada com o secret incorporado do Looker

    Codificação

    A etapa final é codificar o URL.

    Antes de codificar o URL, um URL de incorporação formatado corretamente que use todos os parâmetros possíveis pode ter a seguinte 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
    

    Como mencionado anteriormente, é certo que /embed//embed/ apareça no seu URL.

    Depois de codificar o URL, ele 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
    first_name=%22Alice%22&
    last_name=%22Jones%22&
    user_timezone=%22US%2FPacific%22&
    force_logout_login=true&
    signature=123456789ABCDEFGHIJKL
    

    Como usar o endpoint da 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 incluem o URL do conteúdo que você quer incorporar e retorna um URL de SSO completo, codificado e assinado criptograficamente.

    Para usar esse endpoint da API de um servidor da Web, o servidor da Web precisa ser capaz de 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 incorporados.

    Você também pode usar o API Explorer para gerar um URL de SSO que usa esse endpoint. Instale o APIs Explorer em sua instância do Looker no Looker Marketplace ou visualize uma versão pública no Portal do desenvolvedor do Looker. Depois de gerado, o URL de SSO precisa ser copiado exatamente e pode ser usado apenas uma vez. Caso contrário, ocorrerá uma falha. O APIs 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 saber mais 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 não seja possível informar se os dados e as permissões que você configurou foram configurados corretamente, essa opção pode validar se a autenticação está funcionando corretamente.