La incorporación del inicio de sesión único (SSO) es una forma de presentar paneles de aspecto, exploraciones, paneles o paneles de LookML incorporados a tus usuarios sin necesidad de que tengan un acceso separado de Looker. En su lugar, los usuarios se autenticarán a través de su propia aplicación.
La incorporación de SSO crea una URL especial de Looker que usarás en un iframe. La URL contiene la información que desea compartir, el ID del usuario en su sistema y los permisos que desea tener. Luego, firmarás la URL con una clave secreta proporcionada por Looker.
Hosting adecuado para la incorporación de SSO
Algunos navegadores (Internet Explorer y Safari en el momento de la redacción de este documento) establecen una política de cookies que bloquea las cookies de terceros de forma predeterminada. Dado que Looker usa cookies para la autenticación de usuarios, no es posible intentar autenticar el iframe incorporado en todos los dominios (a menos que el usuario modifique la configuración de privacidad de las cookies de su navegador). Por ejemplo, si quieres incorporar información en https://mycompany.com
, debes asegurarte de que Looker esté en un subdominio, como https://analytics.mycompany.com
.
Si Looker aloja tu instancia, comunícate con el equipo de asistencia de Looker para establecer la configuración de DNS necesaria. Abre una solicitud de asistencia en el Centro de ayuda de Looker haciendo clic en Contact Us.
Si tienes una instancia de Looker alojada por el cliente, asegúrate de que la aplicación que usará la incorporación de SSO esté en el mismo dominio base que la instancia de Looker.
Controlar la visibilidad del cliente con un sistema cerrado
En una configuración de incorporación de SSO, es común que los usuarios de Looker presenten datos a sus propios clientes y tengan clientes de diferentes empresas o grupos que no deberían conocerse entre sí. En este caso, para proteger la información privada de tus clientes, te recomendamos que configures Looker como un sistema cerrado, también llamado instalación multiusuario. En un sistema cerrado, el contenido está aislado, lo que evita que los usuarios de diferentes grupos se conozcan. Por este motivo, recomendamos que habilites la opción Cerrado del sistema antes de otorgar a cualquier usuario externo acceso a la instancia.
Para obtener más información, consulta las páginas de documentación sobre Cómo diseñar y configurar un sistema de niveles de acceso y Prácticas recomendadas de seguridad para estadísticas incorporadas.
Genera la clave secreta de Looker
Para validar que una solicitud de incorporación de SSO sea legítima y que no haya sido falsificada por otra persona, primero tendrás que generar un "secreto de incorporación". Para ello, deberás hacer lo siguiente:
- Ve a la página Incorporar en la sección Administrador de Looker.
- En el menú desplegable Embed SSO Authentication, selecciona Enabled y, luego, haz clic en Update.
- Haz clic en el botón Restablecer secreto para generar tu Secret incorporado. Asegúrate de copiar este Secret en una ubicación segura, ya que no podrás recuperarlo de Looker sin restablecerlo. Si restableces la clave, se dañarán las incorporaciones que usaban la clave anterior.
Cualquier persona con acceso a la clave secreta puede crear una URL para acceder a cualquier modelo al que esté conectada la instancia de Looker, como cualquier usuario, con cualquier permiso. Protege el secreto de incorporación de SSO como lo harías para administrar las credenciales de tu instancia de Looker incorporada y mantén inhabilitada la incorporación de SSO si no la usas.
Cómo compilar la URL incorporada
Para crear la URL correcta, deberás escribir código de modo que puedas codificar correctamente la URL con tu clave secreta y generar otros elementos relacionados con la seguridad. Puedes encontrar varias secuencias de comandos de ejemplo en nuestro repositorio de GitHub de ejemplos de SSO. En las siguientes secciones, se explica la información que deberá proporcionar a esas secuencias de comandos.
Recopila la información necesaria de Looker
Como punto de partida para crear su URL, primero deberá determinar toda la información que deberá incluir. Necesitarás:
Incorporar URL
Recupera la URL del estilo, la exploración o el panel que deseas incorporar. Luego, quita el dominio y coloca /embed
antes de la ruta, de la siguiente manera:
Artículo | Patrón de URL normal | Incorporar URL |
---|---|---|
Vista | 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 |
Panel definido por el usuario | https://instance_name.looker.com/ dashboards-next/1 |
/embed/dashboards-next/1 |
Panel heredado definido por el usuario |
https://instance_name.looker.com/ dashboards/1 |
/embed/dashboards/1 |
panel de LookML | https://instance_name.looker.com/ dashboards-next/my_model::my_dashboard |
/embed/dashboards-next/my_model::my_dashboard |
Panel heredado de LookML |
https://instance_name.looker.com/ dashboards/my_model::my_dashboard |
/embed/dashboards/my_model::my_dashboard |
El contenido incorporado siempre refleja la versión de producción del contenido. Los cambios que realices durante el Modo de desarrollo y que afecten al contenido y que no se hayan implementado en producción no aparecerán en la incorporación.
Permisos
Un conjunto de permisos define lo que puede hacer un usuario o un grupo. Los permisos se pueden aplicar de una de las siguientes maneras:
- Específico del modelo: Este tipo de permiso se aplica solo a los conjuntos de modelos que forman parte de la misma función.
- En toda la instancia: Este tipo de permiso se aplica a la instancia de Looker en su totalidad. Los usuarios incorporados con permisos para toda la instancia pueden realizar ciertas funciones en toda la instancia de Looker, pero no pueden acceder al contenido en función de modelos que no están incluidos en el conjunto de modelos de su rol.
Determine los permisos que desea que tenga el usuario. En la siguiente lista, se muestran todos los permisos disponibles para la incorporación de SSO. Los permisos que no están en la siguiente lista no son compatibles con la incorporación de SSO:
Permiso | Depende | Tipo | Definición |
---|---|---|---|
access_data |
Ninguna | Específico del modelo | Permite que el usuario acceda a los datos (obligatorio para ver aspecto, paneles o exploraciones) |
see_lookml_dashboards |
access_data |
Específico del modelo | Permite que el usuario vea los paneles de LookML |
see_looks |
access_data |
Específico del modelo | Permite que el usuario vea los Apariencias |
see_user_dashboards |
see_looks |
Específico del modelo | Permite que el usuario vea los paneles definidos por el usuario y que explore las carpetas desde una incorporación |
explore |
see_looks |
Específico del modelo | Permite que el usuario vea las páginas de Explorar |
create_table_calculations |
explore |
En toda la instancia | Se necesita para crear cálculos de tablas a partir de Explorar |
save_content |
see_looks |
En toda la instancia | Permite que los usuarios realicen y guarden cambios en los aspectos y los paneles |
send_outgoing_webhook |
see_looks |
Específico del modelo | Permite que el usuario programe paneles y una imagen de un webhook arbitrario |
send_to_s3 |
see_looks |
Específico del modelo | Permite que el usuario programe paneles y tenga la apariencia de un bucket de Amazon S3 |
send_to_sftp |
see_looks |
Específico del modelo | Permite que el usuario programe paneles y una imagen de un servidor SFTP. |
schedule_look_emails |
see_looks |
Específico del modelo | Permite que el usuario programe los paneles y que se envíe a su propio correo electrónico (que se establece con un atributo del usuario llamado "email") o a una dirección de correo electrónico que cumpla con las limitaciones establecidas por la lista de dominios permitidos de correo electrónico. Permite que el usuario con permisos de create_alerts envíe notificaciones de alerta a una dirección de correo electrónico que esté dentro de las limitaciones establecidas por la lista de entidades permitidas de dominio de correo electrónico. |
schedule_external_look_emails |
schedule_look_ emails |
Específico del modelo | Permite que el usuario programe paneles y que el mensaje se envíe a cualquier correo electrónico. Permite que el usuario con permisos de create_alerts envíe notificaciones de alerta a cualquier dominio de correo electrónico. |
send_to_ integration |
see_looks |
Específico del modelo | Permite al usuario entregar contenido de Looker a los servicios de terceros integrados con Looker a través del Centro de acciones de Looker. Este permiso no está relacionado con las acciones de datos. |
create_alerts |
see_looks |
En toda la instancia | Permite que el usuario cree alertas en los mosaicos del panel para recibir notificaciones cuando se cumplan o superen las condiciones especificadas. Los usuarios pueden editar, duplicar y borrar sus propias alertas y las alertas públicas de otros usuarios. Si el lugar de trabajo de Slack del usuario no está conectado a la instancia de Looker, este no podrá crear alertas que envíen notificaciones a Slack. |
download_with_limit |
see_looks |
En toda la instancia | Permite al usuario descargar los resultados de una consulta con un límite aplicado |
download_without_limit |
see_looks |
En toda la instancia | Permite al usuario descargar los resultados de una consulta sin límite aplicado |
see_sql |
see_looks |
Específico del modelo | Le permite al usuario ver el SQL de las consultas y de cualquier error de SQL que se produzca por la ejecución de consultas. |
see_drill_overlay |
access_data |
Específico del modelo | Permite al usuario perforar sin necesidad de ir a la página Explorar completa. |
embed_browse_spaces |
Ninguna | En toda la instancia | Habilita el navegador de contenido para que un usuario pueda explorar carpetas desde una incorporación. Cualquier usuario de la incorporación que tenga el permiso embed_browse_spaces recibe acceso a una carpeta de incorporación personal y a la carpeta compartida de tu organización, si la hay. Se recomienda usar el permiso embed_browse_spaces para los usuarios que tengan el permiso save_content , de modo que puedan explorar carpetas cuando seleccionen dónde guardar el contenido. Para ver el contenido en carpetas, el usuario también necesita los permisos see_looks , see_user_dashboards y see_lookml_dashboards . |
embed_save_shared_space |
Ninguna | En toda la instancia | Permite que el usuario con el permiso save_content guarde contenido en la carpeta compartida de la organización, si es que tiene una. Los usuarios que tengan el permiso save_content , pero no el permiso embed_save_shared_space , solo podrán guardar contenido en su carpeta de incorporación personal. |
Acceso al modelo
Determine a qué modelos de LookML debe tener acceso el usuario. Solo será una lista de nombres de modelos.
Atributos de usuario
Determine los atributos que debe utilizar el usuario (si corresponde). Necesitarás el nombre del atributo de usuario de Looker y el valor que el usuario debe tener para ese atributo.
Grupos
Determine a qué grupos debe pertenecer el usuario, si corresponde. Necesitarás los ID de grupo en lugar de los nombres de grupo. Agregar un usuario de SSO de incorporación a un grupo de Looker te permite administrar el acceso de ese usuario a las carpetas de Looker. Los usuarios incorporados del SSO tendrán acceso a todas las carpetas compartidas con los miembros de sus grupos de Looker.
También puedes usar el parámetro external_group_id
para crear un grupo externo a los grupos normales de Looker. En ese caso, los usuarios de SSO incorporados con el mismo external_group_id
tendrán acceso a una carpeta compartida, denominada “Grupo”, que es exclusiva del grupo externo.
Roles incorporados
Los parámetros permissions
y models
crean una función para el usuario incorporado. Este rol aparece como "Roles incorporados" en la página Usuarios de la sección Administrador de Looker. Si los parámetros permissions
, models
y group_ids
se especifican en la URL de incorporación, la función incorporada es aditiva a cualquier función que ya se haya asignado a los grupos enumerados en el parámetro group_ids
. Esto es lo mismo que las funciones estándar, ya que todas las funciones de Looker son aditivas.
Por ejemplo, supongamos que tienes un grupo existente en Looker con el ID de grupo 1
y que ese grupo ya tiene el permiso explore
para un modelo llamado model_one
, y creas una URL de incorporación con los siguientes parámetros:
group_ids
=[1]
permissions
=["access_data","see_looks"]
models
=["model_two"]
En ese caso, el usuario incorporado heredará la capacidad de ver y explorar los datos en model_one
, y el rol incorporado creado con los parámetros anteriores también otorgará la capacidad de ver los datos en model_two
.
Cómo crear la URL incorporada
Una URL de incorporación de SSO tiene el siguiente formato:
https://HOST/login/embed/INSTANCIA DE URL?PARÁMETROS&signature=SIGNATURE
Host
El host es la ubicación en la que se aloja la instancia de Looker. Por ejemplo, analytics.mycompany.com
. Asegúrate de incluir el número de puerto si no habilitaste la redirección de puertos, como analytics.mycompany.com:9999
.
Incorporar URL
La URL de incorporación se determinó anteriormente. Tendrá un formato como el siguiente:
/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
Esto significa que el patrón /embed//embed/
aparecerá en su URL final. Esto es correcto.
Si usas eventos de JavaScript incorporados, asegúrate de agregar un embed_domain
(el dominio en el que se usa el iframe) al final de la URL incorporada, como se muestra a continuación:
embed_domain
se agrega después de la URL de incorporación y antes de cualquier parámetro. Por lo tanto, si tienes parámetros existentes, como nonce=62
, la adición de embed_domain
se vería de la siguiente manera:
Si usas el SDK de incorporación, asegúrate de agregar embed_domain
y también incluir sdk=2
al final de la URL incorporada, de la siguiente manera:
El parámetro sdk=2
permite que Looker identifique si el SDK está presente y puede aprovechar las funciones adicionales que proporciona el SDK. El SDK no puede agregar este parámetro, ya que forma parte de la URL de SSO firmada.
Parámetros
Los siguientes parámetros de URL se utilizan para especificar la información necesaria para la incorporación de SSO:
Parámetro | ¿El valor es obligatorio? | Descripción | Tipo de datos | Ejemplo |
---|---|---|---|---|
nonce |
Sí | Cualquier string aleatoria que desees, pero no puede repetirse en una hora y debe tener menos de 255 caracteres. Esto evita que un atacante vuelva a enviar la URL de un usuario legítimo para recopilar información que no debería tener. |
String de JSON | "22b1ee700ef3dc2f500fb7" |
time |
Sí | La hora actual como una marca de tiempo UNIX. | Integer | 1407876784 |
session_length |
Sí | La cantidad de segundos que el usuario debe permanecer conectado a Looker, entre 0 y 2,592,000 segundos (30 días). | Integer | 86400 |
external_user_id |
Sí | Un identificador único para el usuario en la aplicación que incorpora Looker. Looker usa este valor para diferenciar a los usuarios de incorporación de SSO. Puedes crear esta string y puede ser cualquier valor que desees. Sin embargo, este valor debe ser único para un conjunto determinado de permisos, atributos de usuario y modelos. Por ejemplo, si el mismo usuario tiene diferentes permisos en dos contextos, necesitará dos ID de usuario externos diferentes. Por motivos de seguridad, asegúrate de no usar el mismo external_user_id en diferentes sesiones de incorporación para distintos usuarios interactivos. |
String de JSON | "user-4" |
permissions |
Sí | La lista de permisos que el usuario debe tener. Consulta la sección Permisos de esta página para ver la lista de permisos permitidos. |
Arreglo de strings | [ "access_data", "see_looks" ] |
models |
Sí | La lista de nombres de modelos a los que el usuario debe tener acceso. | Arreglo de strings | [ "model_one", "model_two" ] |
group_ids |
No | La lista de grupos de Looker de los que debe ser miembro el usuario, si corresponde. Usa los ID de grupo en lugar de los nombres de grupo. | Arreglo de números enteros | [4, 3] |
external_group_id |
No | Un identificador único para el grupo al que pertenece el usuario en la aplicación que incorpora Looker (si lo deseas) Los usuarios que tengan permiso para guardar contenido y compartan un ID del grupo externo podrán guardar y editar contenido en una carpeta compartida de Looker llamada "Grupo". |
String de JSON | "Accounting" |
user_attributes |
No | Es la lista de atributos que debe tener el usuario (si corresponde). Contiene una lista de nombres de atributos de usuario seguidos del valor del atributo de usuario. Si tu modelo de MLML está localizado, puedes usar el atributo de usuario locale en la URL de incorporación para especificar un idioma para la incorporación. Por ejemplo, si se incluye el parámetro user_attributes { "locale" : "fr_FR" } , la incorporación cargará el francés como idioma. |
Hash de strings | { "vendor_id" : "17", "company" : "xactness" } |
access_filters |
Sí | En Looker 3.10, este parámetro dejó de estar disponible, pero de todos modos es obligatorio en la URL. Usa access_filters con un marcador de posición vacío, por ejemplo, access_filters={} . |
Marcador de posición vacío | {} |
first_name |
No | El nombre del usuario. Si se deja en blanco, first_name retendrá el valor de la última solicitud o será “Incorporar” si no se estableció ningún nombre. |
String de JSON | "Alice" |
last_name |
No | El apellido del usuario. Si se deja en blanco, last_name retendrá el valor de la última solicitud o será “Incorporar” si no se estableció ningún apellido. |
String de JSON | "Jones" |
user_timezone |
No | Si habilitaste las zonas horarias específicas de usuarios, configura el valor de la opción Zona horaria del usuario en el menú desplegable Zona horaria del panel o aspecto incorporado. Este parámetro no cambia directamente la zona horaria en la que se muestra el contenido. El usuario deberá seleccionar la zona horaria deseada en el menú desplegable. Consulta los valores válidos en la página de documentación de referencia de la zona horaria de incorporación de SSO. Sugerencia para el equipo de Chat: Si quieres establecer la zona horaria del usuario como predeterminada, usa uno de los siguientes métodos: ?query_timezone=user_timezone a la URL incorporada. Por ejemplo:/embed/dashboards/1?query_timezone=user_timezone |
String de JSON o valor nulo | "US/Pacific" o - null |
force_logout_login |
Sí | Si un usuario normal de Looker ya accedió a Looker y ve un elemento incorporado con SSO, puedes elegir lo siguiente: 1) Debe ver el elemento con sus credenciales actuales. o 2) Debe salir de la cuenta y volver a acceder con las credenciales de SSO. |
Booleano (verdadero o falso) | true |
Todos los parámetros anteriores son obligatorios, pero cualquier parámetro con "No" en la columna "¿Se requiere valor?" se puede utilizar con un valor vacío. Por ejemplo, puedes usar group_ids []
o user_attributes {}
.
Firma
Para generar la firma, debes seguir estos pasos.
- Recopila los siguientes valores de parámetros en este orden:
- Host, seguido de
login/embed/
(por ejemplo,analytics.mycompany.com/login/embed/
) - Incorporar URL
- Nonce
- Hora actual
- Duración de la sesión
- ID de usuario externo
- Permisos
- Modelos
- ID de grupo
- ID del grupo externo
- Atributos de usuario
- Filtros de acceso (requiere un marcador de posición vacío)
- Host, seguido de
- Da formato a todos los valores, excepto aquellos de URL de host y de incorporación, como JSON
- Concatena los valores con saltos de línea (
\n
) - HMAC firma la string concatenada con tu secreto de incorporación de Looker.
Codificación
El último paso es codificar su URL.
Antes de codificar la URL, una URL incorporada con el formato correcto que use todos los parámetros posibles podría verse de la siguiente manera:
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
Como se señaló anteriormente, es correcto que /embed//embed/
aparezca en tu URL.
Después de que codifiques la URL, debería verse de la siguiente manera:
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
Usa el extremo de API de create_sso_embed_url
La API de Looker incluye el extremo create_sso_embed_url
, que toma un conjunto de parámetros de incorporación de SSO que incluye la URL del contenido que deseas incorporar y muestra una URL de SSO completa, codificada y firmada de manera criptográfica.
Para usar este extremo de API desde un servidor web, este debe poder autenticarse en la API de Looker con privilegios de administrador. El dominio del servidor web también debe aparecer en la lista de entidades permitidas para incorporar el dominio.
También puedes usar el Explorador de API en tu instancia de Looker para generar una URL de SSO con este extremo. Una vez generada, la URL de SSO debe copiarse de manera exacta y solo puede usarse una vez; de lo contrario, fallará. La documentación interactiva de la API también es útil para generar una URL de SSO y compararla con una URL de SSO creada manualmente a fin de solucionar problemas.
Para obtener más información sobre la API de Looker, consulta la página Descripción general de la API de Looker.
Prueba la URL de incorporación
Para probar la URL final, pégala en el Validador Embed URI de la página Embed de la sección Admin de Looker. Si bien esta opción no puede decirte si los datos y permisos que imaginaste se configuraron correctamente, puede validar que tu autenticación funciona correctamente.