Comienza a incorporar SSO

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:

  1. Ve a la página Incorporar en la sección Administrador de Looker.
  2. En el menú desplegable Embed SSO Authentication, selecciona Enabled y, luego, haz clic en Update.
  3. 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/looks/4”
“/embed/looks/4?embed_domain=https://misitioweb.com”

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:

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

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:

“/embed/looks/4”
`/embed/looks/4?embed_domain=https://misitioweb.com&sdk=2`

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 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 La hora actual como una marca de tiempo UNIX. Integer 1407876784
session_length 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 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 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 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 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:

  • Agrega el parámetro ?query_timezone=user_timezone a la URL incorporada. Por ejemplo:

    /embed/dashboards/1?query_timezone=user_timezone
  • Guarda el panel incorporado o la opción Mirar con la zona horaria predeterminada establecida en Zona horaria del usuario, que usará la zona horaria del usuario de forma predeterminada para los usuarios incorporados y no incorporados.
  • String de JSON o valor nulo "US/Pacific"

    o -

    null
    force_logout_login 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.

    1. 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)
    2. Da formato a todos los valores, excepto aquellos de URL de host y de incorporación, como JSON
    3. Concatena los valores con saltos de línea (\n)
    4. 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.