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:
- Vai alla pagina Embed (Incorpora) nella sezione Admin (Amministrazione) di Looker.
- Seleziona Enabled (Attivato) dal menu a discesa Embed SSO Authentication (Incorpora autenticazione SSO), quindi fai clic su Update (Aggiorna).
- 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_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:
Se utilizzi l'SDK Embed, assicurati di aggiungere embed_domain
e di includere sdk=2
alla fine dell'URL di incorporamento, come segue:
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 |
Sì | 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 |
Sì | L'ora corrente come timestamp UNIX. | Numero intero | 1407876784 |
session_length |
Sì | 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 |
Sì | 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 |
Sì | 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 |
Sì | 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 |
Sì | 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: ?query_timezone=user_timezone all'URL di incorporamento. Ad esempio:/embed/dashboards/1?query_timezone=user_timezone |
Stringa JSON o null | "US/Pacific" - oppure - null |
force_logout_login |
Sì | 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:
- 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)
- Host, seguito da
- Formattare tutti i valori diversi da Host e Incorpora URL come JSON
- Concatena i valori con interruzioni di riga (
\n
) - 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.