Iniziare a utilizzare l'incorporamento tramite SSO

L'incorporamento con Single Sign-On (SSO) è un modo per presentare ai tuoi utenti dashboard Look, Explore, Dashboard o LookML incorporati sicuri senza richiedere loro di disporre di credenziali di accesso Looker separate. Gli utenti verranno invece autenticati tramite la tua applicazione.

L'incorporamento a SSO funziona creando un URL Looker speciale che utilizzerai in un iframe. L'URL contiene le informazioni che vuoi condividere, l'ID dell'utente nel sistema e le autorizzazioni di cui dispone l'utente. Quindi, firmerai l'URL con una chiave segreta fornita da Looker.

Hosting adeguato per incorporamento SSO

Al momento della stesura di questo articolo, alcuni browser (Internet Explorer e Safari) utilizzano per impostazione predefinita norme relative ai cookie che bloccano i cookie di terze parti. Poiché Looker utilizza i cookie per l'autenticazione degli utenti, non è possibile tentare di autenticare l'iframe incorporato in più domini in questi browser (a meno che l'utente non modifichi le impostazioni della privacy dei cookie del browser). Ad esempio, se vuoi incorporare informazioni su https://mycompany.com, devi assicurarti che Looker si trovi in un sottodominio, come https://analytics.mycompany.com.

Se Looker ospita l'istanza, contatta l'assistenza di Looker per impostare la configurazione DNS necessaria. Apri una richiesta di supporto nel Centro assistenza Looker facendo clic su Contattaci.

Se hai un'istanza di Looker ospitata dal cliente, assicurati che l'applicazione che utilizzerà l'incorporamento SSO si trovi nello stesso dominio di base dell'istanza di Looker.

Controllare la visibilità dei client con un sistema chiuso

È comune in una configurazione di incorporamento SSO per gli utenti Looker che presentano dati ai propri clienti e hanno clienti di diverse aziende o gruppi che non devono conoscere tra loro. In questo scenario, per salvaguardare le informazioni private dei clienti, consigliamo vivamente di configurare Looker come sistema chiuso, chiamato anche installazione multitenant. In un sistema chiuso, i contenuti sono isolati, impedendo agli utenti di gruppi diversi di avere informazioni sugli altri. Per questo motivo, ti consigliamo di abilitare l'opzione Sistema chiuso prima di concedere a qualsiasi utente esterno l'accesso alla tua istanza.

Per ulteriori informazioni, consulta le pagine della documentazione Progettazione e configurazione di un sistema di livelli di accesso e Best practice per la sicurezza delle analisi incorporate.

Generazione della chiave segreta di Looker in corso...

Per confermare che una richiesta di incorporamento SSO è legittima e non è stata falsificata da qualcun altro, devi prima generare un "secret di incorporamento". Ecco come fare:

  1. Vai alla pagina Embed (Incorpora) nella sezione Admin (Amministrazione) di Looker.
  2. Seleziona Enabled (Attivato) dal menu a discesa Embed SSO Authentication (Incorpora autenticazione SSO), quindi fai clic su Update (Aggiorna).
  3. Fai clic sul pulsante Reimposta secret per generare il secret di incorporamento. Assicurati di copiare questo secret in un luogo sicuro, perché non potrai più recuperarlo da Looker senza reimpostarlo. La reimpostazione della chiave comporterà l'interruzione di eventuali incorporamenti che utilizzavano la vecchia chiave.

Chiunque abbia accesso alla chiave secret può creare un URL per accedere a qualsiasi modello a cui è collegata un'istanza di Looker, come qualsiasi utente, con qualsiasi autorizzazione. Proteggi il secret di incorporamento SSO come faresti con le credenziali dell'istanza di Looker incorporate e mantieni l'incorporamento SSO disabilitato se non lo usi.

Creazione dell'URL per l'incorporamento

Per creare l'URL corretto è necessario scrivere il codice, in modo da poter codificare correttamente l'URL con la chiave segreta e generare altri elementi di sicurezza. Puoi trovare diversi script di esempio nel nostro repository GitHub di esempi SSO. Le seguenti sezioni spiegano le informazioni che dovrai fornire a tali script.

Raccolta delle informazioni di Looker necessarie

Come punto di partenza per la creazione del tuo URL, devi prima determinare tutte le informazioni che è necessario includere. Requisiti:

Incorpora URL

Recupera l'URL dell'aspetto, dell'esplorazione o della dashboard che vuoi incorporare. Quindi, rimuovi il dominio e inserisci /embed prima del percorso nel seguente modo:

Elemento Pattern URL normale Incorpora URL
Look https://instance_name.looker.com/
looks/4
/embed/looks/4
Esplora https://instance_name.looker.com/
explore/my_model/my_explore
/embed/explore/my_model/my_explore
Dashboard definita dall'utente https://instance_name.looker.com/
dashboards-next/1
/embed/dashboards-next/1
Dashboard precedente
definita dall'utente
https://instance_name.looker.com/
dashboards/1
/embed/dashboards/1
dashboard LookML https://instance_name.looker.com/
dashboards-next/my_model::my_dashboard
/embed/dashboards-next/my_model::my_dashboard
Dashboard LookML
precedente
https://instance_name.looker.com/
dashboards/my_model::my_dashboard
/embed/dashboards/my_model::my_dashboard

I contenuti incorporati riflettono sempre la versione di produzione dei contenuti. Qualsiasi modifica apportata in modalità di sviluppo che influisca sui contenuti di cui non è stato eseguito il deployment in produzione non verrà visualizzata in un incorporamento.

Autorizzazioni

Un set di autorizzazioni definisce le azioni consentite a un utente o a un gruppo. Le autorizzazioni possono essere applicate in due modi:

  • Specifico per modello: questo tipo di autorizzazione viene applicata soltanto ai set di modelli che fanno parte dello stesso ruolo.
  • A livello di istanza: questo tipo di autorizzazione si applica all'istanza di Looker nel suo complesso. Gli utenti con autorizzazioni di accesso a livello di istanza possono eseguire determinate funzioni sull'intera istanza di Looker, ma non possono accedere ai contenuti in base ai modelli non inclusi nel set di modelli del loro ruolo.

Determina le autorizzazioni da assegnare all'utente. Il seguente elenco mostra tutte le autorizzazioni disponibili per l'incorporamento con SSO. Le autorizzazioni non incluse nel seguente elenco non sono supportate per l'incorporamento con SSO:

Autorizzazione Dipende da Tipo Definizione
access_data Nessuno Specifico per il modello Consente all'utente di accedere ai dati (obbligatorio per la visualizzazione di Look, dashboard o Esplorazioni)
see_lookml_dashboards access_data Specifico per il modello Consente all'utente di visualizzare le dashboard di LookML
see_looks access_data Specifico per il modello Consente agli utenti di visualizzare i Look
see_user_dashboards see_looks Specifico per il modello Consente agli utenti di visualizzare dashboard definite dall'utente e di sfogliare cartelle da un elemento incorporato
explore see_looks Specifico per il modello Consente all'utente di visualizzare le pagine Esplora
create_table_calculations explore A livello di istanza Necessario per creare calcoli delle tabelle da Esplora
save_content see_looks A livello di istanza Consente agli utenti di apportare modifiche ai look e alle dashboard e salvarle
send_outgoing_webhook see_looks Specifico per il modello Consente all'utente di pianificare dashboard e Look a un webhook arbitrario
send_to_s3 see_looks Specifico per il modello Consente all'utente di pianificare dashboard e Look in un bucket Amazon S3
send_to_sftp see_looks Specifico per il modello Consente all'utente di pianificare dashboard e look su un server SFTP
schedule_look_emails see_looks Specifico per il modello Consente all'utente di pianificare le dashboard e i Look da inviare al proprio indirizzo email (impostato con un attributo utente denominato "email") o a un indirizzo email compreso nelle limitazioni impostate dalla lista consentita dei domini email. Consente agli utenti con autorizzazioni create_alerts di inviare notifiche di avviso a un indirizzo email compreso nelle limitazioni impostate dalla lista consentita dei domini email.
schedule_external_look_emails schedule_look_
emails
Specifico per il modello Consente all'utente di pianificare dashboard e Look da inviare a qualsiasi email. Consente agli utenti con autorizzazioni create_alerts di inviare notifiche di avviso a qualsiasi dominio email.
send_to_
integration
see_looks Specifico per il modello Consente all'utente di caricare contenuti Looker nei servizi di terze parti integrati con Looker tramite l'hub azioni di Looker. Questa autorizzazione non è correlata alle azioni sui dati.
create_alerts see_looks A livello di istanza Consente all'utente di creare avvisi sui riquadri delle dashboard per ricevere notifiche quando le condizioni specificate vengono soddisfatte o superate. Gli utenti possono modificare, duplicare ed eliminare i loro avvisi e quelli degli Pubblico di altri utenti. Se l'area di lavoro di Slack dell'utente non è collegata all'istanza di Looker, non potrà creare avvisi che inviano notifiche a Slack.
download_with_limit see_looks A livello di istanza Consente all'utente di scaricare i risultati di una query con un limite applicato
download_without_limit see_looks A livello di istanza Consente all'utente di scaricare i risultati di una query senza limiti applicati
see_sql see_looks Specifico per il modello Consente all'utente di vedere l'SQL per le query e gli eventuali errori SQL derivanti dall'esecuzione di query
see_drill_overlay access_data Specifico per il modello Consente all'utente di eseguire il drill-down senza dover accedere alla pagina Esplora completa.
embed_browse_spaces Nessuno A livello di istanza Consente al browser di contenuti di consentire a un utente di sfogliare cartelle da un incorporamento. A qualsiasi utente incorporato che dispone dell'autorizzazione embed_browse_spaces viene concesso l'accesso a una cartella di incorporamento personale e alla cartella Condivisi della tua organizzazione, se esistente.

L'autorizzazione embed_browse_spaces è consigliata per gli utenti che dispongono dell'autorizzazione save_content, in modo che l'utente possa sfogliare le cartelle quando seleziona dove salvare i contenuti.

Per visualizzare i contenuti nelle cartelle, l'utente deve disporre anche delle autorizzazioni see_looks, see_user_dashboards e see_lookml_dashboards.
embed_save_shared_space Nessuno A livello di istanza Consente agli utenti con l'autorizzazione di save_content di salvare contenuti nella cartella Shared (Condivisa) dell'organizzazione, se disponibile. Gli utenti che dispongono dell'autorizzazione save_content ma non dell'autorizzazione embed_save_shared_space avranno solo la possibilità di salvare i contenuti nella propria cartella di incorporamento personale.

Accesso al modello

Determina a quali modelli LookML deve accedere l'utente. Si tratta semplicemente di un elenco di nomi di modelli.

Attributi utente

Stabilisci gli attributi utente di cui deve disporre l'utente. Dovrai fornire il nome dell'attributo utente di Looker e il valore che deve avere per l'attributo.

Gruppi

Stabilisci a quali gruppi deve appartenere l'utente. Avrai bisogno degli ID dei gruppi anziché dei nomi dei gruppi. L'aggiunta di un utente di incorporamento SSO a un gruppo Looker ti consente di gestire l'accesso di quell'utente alle cartelle Looker. Gli utenti dell'incorporamento SSO avranno accesso a qualsiasi cartella condivisa con i membri dei loro gruppi di Looker.

Puoi anche utilizzare il parametro external_group_id per creare un gruppo esterno ai gruppi Looker standard. In tal caso, gli utenti dell'incorporamento SSO con lo stesso external_group_id avranno accesso a una cartella condivisa, denominata "Gruppo", che è univoca per il gruppo esterno.

Ruoli incorporati

I parametri permissions e models creano un ruolo per l'utente di incorporamento. Questo ruolo viene visualizzato come "Ruolo incorporato" nella pagina Utenti della sezione Amministrazione di Looker. Se i parametri permissions, models e group_ids sono tutti specificati nell'URL di incorporamento, il ruolo incorporato è additive a tutti i ruoli già assegnati ai gruppi elencati nel parametro group_ids. Lo stesso vale per i ruoli standard, in quanto tutti i ruoli in Looker sono cumulativi.

Ad esempio, supponiamo che tu abbia un gruppo in Looker con ID gruppo 1 e che abbia già l'autorizzazione explore per un modello denominato model_one e che crei un URL di incorporamento con i seguenti parametri:

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

In questo caso, l'utente di incorporamento erediterà la possibilità di visualizzare ed esplorare i dati su model_one e il ruolo di incorporamento creato con i parametri precedenti concederà anche la possibilità di visualizzare i dati su model_two.

Creazione dell'URL per l'incorporamento

Un URL di incorporamento SSO ha il seguente formato:

https://HOST/login/embed/Whitelist URL?PARAMETRI&signature=FIRMA

Host

L'host è la posizione in cui è ospitata l'istanza di Looker. Ad esempio, analytics.mycompany.com. Assicurati di includere il numero di porta se non hai abilitato il port forwarding, ad esempio analytics.mycompany.com:9999.

Incorpora URL

L'URL per l'incorporamento è stato determinato in precedenza. Il formato sarà il seguente:

  • /embed/looks/4
  • /embed/explore/my_model/my_explore
  • /embed/dashboards-next/1 o /embed/dashboards/1
  • /embed/dashboards-next/my_model::my_dashboard o /embed/dashboards/my_model::my_dashboard

Questo significa che il pattern /embed//embed/ verrà visualizzato nell'URL finale; è corretto.

Se utilizzi eventi JavaScript incorporati, assicurati di aggiungere un embed_domain (il dominio in cui viene utilizzato l'iframe) alla fine dell'URL di incorporamento, in questo modo:

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

embed_domain viene aggiunto dopo l'URL di incorporamento e prima di qualsiasi parametro. Pertanto, se avevi parametri esistenti, come nonce=62, l'aggiunta di embed_domain avrebbe il seguente aspetto:

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

Se utilizzi l'SDK Embed, assicurati di aggiungere embed_domain e di includere sdk=2 alla fine dell'URL di incorporamento, come segue:

'/embed/looks/4'
'/embed/looks/4?embed_domain=https://mywebsite.com&sdk=2`

Il parametro sdk=2 consente a Looker di identificare la presenza dell'SDK e di usufruire delle funzionalità aggiuntive fornite dall'SDK. L'SDK non può aggiungere questo parametro perché fa parte dell'URL SSO firmato.

Parametri

I seguenti parametri URL vengono utilizzati per specificare le informazioni necessarie per l'incorporamento SSO:

Parametro Valore obbligatorio? Descrizione Tipo di dati Esempio
nonce Qualsiasi stringa casuale che ti piace, ma che non può essere ripetuta entro un'ora e deve contenere meno di 255 caratteri.

In questo modo si impedisce a un utente malintenzionato di inviare nuovamente l'URL di un utente legittimo per raccogliere informazioni che non dovrebbe avere.
Stringa JSON "22b1ee700ef3dc2f500fb7"
time L'ora corrente come timestamp UNIX. Numero intero 1407876784
session_length Il numero di secondi per cui l'utente deve rimanere collegato a Looker, compreso tra 0 e 2.592.000 (30 giorni). Numero intero 86400
external_user_id Un identificatore univoco dell'utente nell'applicazione che incorpora Looker. Looker utilizza questo valore per distinguere gli utenti di incorporamento SSO.

Puoi creare questa stringa e puoi scegliere qualsiasi valore. Tuttavia, questo valore deve essere univoco per un determinato insieme di autorizzazioni, attributi utente e modelli. Ad esempio, se lo stesso utente avrà autorizzazioni diverse in due contesti, avrà bisogno di due ID utente esterni diversi.

Per motivi di sicurezza, assicurati di non utilizzare lo stesso external_user_id in diverse sessioni di incorporamento per diversi utenti interattivi.
Stringa JSON "user-4"
permissions L'elenco delle autorizzazioni che l'utente deve avere.

Per l'elenco delle autorizzazioni consentite, consulta la sezione Autorizzazioni di questa pagina.
Array di stringhe [
  "access_data",
  "see_looks"
]
models L'elenco dei nomi dei modelli a cui l'utente deve avere accesso. Array di stringhe [
  "model_one",
  "model_two"
]
group_ids No L'elenco di gruppi Looker di cui l'utente deve essere membro, se presente. Utilizza gli ID dei gruppi anziché i nomi dei gruppi. Array di numeri interi [4, 3]
external_group_id No Un identificatore univoco per il gruppo a cui appartiene l'utente nell'applicazione che incorpora Looker, se lo desidera.

Gli utenti che sono autorizzati a salvare contenuti e a condividere un ID gruppo esterno, potranno salvare e modificare i contenuti in una cartella Looker condivisa denominata "Group".
Stringa JSON "Accounting"
user_attributes No L'elenco di attributi utente di cui deve disporre l'utente. Contiene un elenco di nomi di attributi utente seguiti dal valore dell'attributo utente.

Se il tuo modello LookML è localizzato, puoi utilizzare l'attributo utente locale nell'URL per l'incorporamento per specificare una lingua per l'incorporamento. Ad esempio, se includi il parametro user_attributes { "locale" : "fr_FR" }, l'incorporamento carica il francese come lingua.
Hash di stringhe {
  "vendor_id" : "17",
  "company" : "xactness"
}
access_filters In Looker 3.10 questo parametro è stato ritirato, ma è ancora obbligatorio nell'URL. Utilizza access_filters con un segnaposto vuoto, ad esempio access_filters={}. Segnaposto vuoto {}
first_name No Nome dell'utente. Se il campo viene lasciato vuoto, first_name conserverà il valore dell'ultima richiesta oppure sarà "Embed" se non è mai stato impostato un nome. Stringa JSON "Alice"
last_name No Cognome dell'utente. Se il campo viene lasciato vuoto, last_name conserverà il valore dell'ultima richiesta oppure sarà "Embed" se non è mai stato impostato un cognome. Stringa JSON "Jones"
user_timezone No Se hai abilitato i fusi orari specifici degli utenti, imposta il valore dell'opzione Fuso orario dello spettatore nel menu a discesa Fuso orario nell'aspetto o nella dashboard incorporati. Questo parametro non modifica direttamente il fuso orario in cui vengono visualizzati i contenuti, l'utente dovrà selezionare il fuso orario desiderato dal menu a discesa.

Vedi i valori validi nella pagina della documentazione relativa al riferimento del fuso orario di incorporamento SSO.

Suggerimento del team di Chat: se vuoi che i tuoi contenuti incorporati vengano impostati sul valore predefinito del visualizzatore, utilizza uno dei seguenti metodi:

  • Aggiungi il parametro ?query_timezone=user_timezone all'URL di incorporamento. Ad esempio:

    /embed/dashboards/1?query_timezone=user_timezone
  • Salva la dashboard incorporata o il Look con il fuso orario predefinito impostato su Fuso orario del visualizzatore, che utilizzerà il fuso orario dell'utente per impostazione predefinita sia per gli utenti incorporati che per quelli non incorporati.
  • Stringa JSON o null "US/Pacific"

    - oppure -

    null
    force_logout_login Se un normale utente Looker ha già eseguito l'accesso a Looker e visualizza un elemento incorporato SSO, puoi scegliere se:

    1) Deve visualizzare l'elemento con le sue attuali credenziali

    oppure

    2) Deve essere disconnesso e accedere di nuovo con le credenziali SSO.
    Booleano (true [vero] o false [falso]) true

    Tutti i parametri precedenti sono obbligatori, ma qualsiasi parametro con "No" nella colonna "Valore obbligatorio?" può essere utilizzato con un valore vuoto. Ad esempio, puoi utilizzare group_ids [] o user_attributes {}.

    Firma

    Per generare la firma, segui questi passaggi:

    1. Raccogli i seguenti valori parametro in questo ordine:
      • Host, seguito da login/embed/ (ad esempio, analytics.mycompany.com/login/embed/)
      • Incorpora URL
      • Nonce
      • Ora attuale
      • Durata sessione
      • ID utente esterno
      • Autorizzazioni
      • Modelli
      • ID gruppo
      • ID gruppo esterno
      • Attributi dell'utente
      • Filtri di accesso (è necessario un segnaposto vuoto)
    2. Formattare tutti i valori diversi da Host e Incorpora URL come JSON
    3. Concatena i valori con interruzioni di riga (\n)
    4. Firma HMAC la stringa concatenata con il secret di incorporamento di Looker

    Codifica

    Il passaggio finale consiste nella codifica dell'URL.

    Prima di codificare l'URL, un URL di incorporamento formattato correttamente che utilizza tutti i possibili parametri potrebbe avere il seguente aspetto:

    https://analytics.mycompany.com/login/embed//embed/dashboards-next/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
    

    Come indicato in precedenza, è corretto che /embed//embed/ venga visualizzato nell'URL.

    Dopo la codifica dell'URL, la pagina avrà il seguente aspetto:

    https://analytics.mycompany.com/login/embed/%2embed%2Fdashboards-next%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
    

    Utilizzo dell'endpoint API create_sso_embed_url

    L'API Looker include l'endpoint create_sso_embed_url, che accetta una serie di parametri di incorporamento SSO che includono l'URL dei contenuti che vuoi incorporare e restituisce un URL SSO completo, codificato e criptato.

    Per utilizzare questo endpoint API da un server web, il server web deve essere in grado di autenticarsi nell'API Looker con privilegi amministrativi. Il dominio del server web deve essere elencato anche nella lista consentita del dominio incorporato.

    Puoi anche utilizzare Explorer API sulla tua istanza di Looker per generare un URL SSO utilizzando questo endpoint. Una volta generato, l'URL SSO deve essere copiato esattamente e può essere utilizzato una sola volta, altrimenti l'operazione non andrà a buon fine. La documentazione interattiva sulle API è utile anche per generare un URL SSO e confrontarlo con un URL SSO creato manualmente per la risoluzione dei problemi.

    Per ulteriori informazioni sull'API Looker, consulta la pagina Panoramica dell'API Looker.

    Test dell'URL per l'incorporamento

    Per testare l'URL finale, incollalo nella sezione Embed URI Validator (Incorpora URI URI) della pagina Embed della sezione Admin (Amministrazione) di Looker. Anche se questa opzione non è in grado di dirti se i dati e le autorizzazioni che hai configurato sono stati configurati correttamente, può confermare che l'autenticazione funzioni correttamente.