Federar identidades con SAML

Algunas organizaciones ya tienen un servicio de directorio de usuarios que administra la autenticación y el permiso de los usuarios, y les resulta poco útil emplear las funciones de administración de usuarios integradas en OpenDataSoft. Para abordar este caso de uso, la plataforma OpenDataSoft admite proveedores de identidad (IdP) externos por medio del estándar SAMLv2. Este permite configurar una federación de identidades entre el dominio, que actuará como proveedor de servicio, y este IdP. Esta federación permite a los usuarios de su dominio conectar con la plataforma utilizando el proveedor de identidad y, si tienen uno, reutilizar su contexto de seguridad activo para crear un mecanismo SSO. Esta federación permite el acceso de usuario en 2 modos distintos: el modo transitorio (en que los usuarios se crean sobre la marcha una vez validados por el IdP) y el modo vinculado (en que una cuenta de usuario OpenDataSoft está vinculada a una identidad SAML por medio de una serie de propiedades conocidas por el IdP). Ambos modos pueden coexistir en un dominio, pero un mismo usuario solo puede conectarse empleando un modo.

Modo transitorio

En el modo transitorio, todo usuario que tenga una cuenta de usuario en el IdP considerado de confianza por un dominio y no tenga una cuenta de usuario OpenDataSoft podrá conectarse a través de SAML. Se creará un usuario transitorio para el usuario a partir de los valores de configuración SAML del dominio. Estos valores de configuración son el mapeador de cuentas (el conjunto de parámetros enviados por el IdP que identifican un usuario de forma exclusiva) y el mapeador de atributos (los parámetros correspondientes al nombre, apellido y dirección de correo electrónico del usuario). Estos usuarios transitorios tienen permiso para explorar los conjuntos de datos públicos del dominio. Se pueden conceder permisos adicionales a estos usuarios utilizando el grupo de usuarios de SAML genérico. Los usuarios transitorios no pueden tener asignados permisos especiales en conjuntos de datos individuales ni añadirse a grupos (salvo el grupo de usuarios de SAML, del cual son automáticamente miembros).

El modo transitorio se puede desactivar directamente mediante la casilla "Desactivar el modo de autenticación transitorio" en la configuración de SAML. Si el modo transitorio está desactivado, solo podrán conectarse por SAML los usuarios vinculados.

Modo vinculado

En el modo vinculado, los usuarios que tengan una cuenta de usuario OpenDataSoft podrán vincular esta cuenta a valores específicos del conjunto de parámetros definidos en la configuración del mapeador de cuentas. Una vez establecido el vínculo, los usuarios que inicien la sesión a través de SAML iniciarán la sesión en su cuenta de usuario OpenDataSoft. Los usuarios vinculados pueden tener asignados los mismos permisos y añadirse a grupos igual que los usuarios normales (dado que son usuarios normales). También son automáticamente miembros del grupo de usuarios de SAML. Este modo permite efectuar un control de permisos más preciso, y a la vez conservar la mayoría de las ventajas del modo transitorio. El único inconveniente es la necesidad de que los usuarios creen una cuenta en el dominio antes de vincularla a su identidad SAML. Hay 2 métodos para vincular una cuenta de usuario OpenDataSoft. El primero es hacer clic en Vincular la cuenta a una cuenta SAML en este dominio en la ficha de identidad de la configuración de la cuenta de usuario.

"Link your account to a SAML account on this domain" link in the identity tab of the user account settings

El otro método consiste en crear el vínculo durante el proceso de creación de la cuenta de usuario, haciendo clic en el vínculo para completar el registro a través de SAML. En realidad, esta operación acelera el proceso de creación de la cuenta de usuario y permite vincular la cuenta rápidamente.

Account registration in SAML enabled domains

SSO (Single Sign-On) automático

La plataforma OpenDataSoft ofrece un mecanismo para iniciar la sesión de los usuarios automáticamente cuando visitan por primera vez el dominio. El mecanismo consiste en iniciar el flujo de autenticación SAML para los usuarios anónimos, como si hubieran hecho clic para "iniciar sesión con SAML", en cuanto acceden a (prácticamente) cualquier página del dominio. Esta función solo tiene sentido en los dominios privados ya que impide el acceso anónimo al dominio. Una vez activado el SSO (Single Sign-On) automático, los usuarios que deseen conectarse a la plataforma con sus credenciales de OpenDataSoft, tendrán la opción de hacerlo manualmente visitando la página de inicio de sesión del dominio en https://<platform-url>/login/.

SLO (Single Log-Out)

La plataforma OpenDataSoft admite el flujo SLO (Single Log-Out) SAML estándar por medio de las vinculaciones HTTP-Redirect. Esto significa que si el IdP lo permite, un cierre de sesión de un usuario conectado por SAML desencadenará un cierre de sesión del IdP, y las solicitudes de cierre de sesión del IdP desencadenarán un cierre de sesión del usuario en la plataforma.

Registrar y configurar un proveedor de identidad

  1. Navegue a la página de registro de la interfaz de configuración del dominio.

Signup configuration page
  1. Seleccione "Permitir acceso para usuarios de SAML".

SAML IDP configuration interface
  1. Pegue el documento de metadatos de proveedor de identidad en el campo "Documento de metadatos de proveedor de identidad (IdP)".

  2. Si utiliza Microsoft Azure Active Directory como IdP, seleccione la casilla en cuestión.

  3. Si desea desactivar el modo de conexión transitorio, y asegurarse así de que únicamente los usuarios vinculados puedan conectarse a la plataforma con SAML, marque la casilla correspondiente.

  4. Introduzca el conjunto de atributos enviados por el IdP que definen un usuario de forma exclusiva.

    Si los usuarios se definen por su ID de nombre y el formato del ID de nombre utilizado por el IdP no es transitorio, no es necesario especificar nada.

    Por ejemplo, si los usuarios se definen por los atributos "FirstName" y "LastName" transmitidos por el IdP, primero especifique "FirstName" en la casilla y pulse Entrar, y después "LastName" y vuelva a pulsar Entrar.

  5. Introduzca las asignaciones de atributos correspondientes al nombre de usuario, el apellido, el nombre y la dirección de correo electrónico.

    Aquí tiene que declarar los nombres de campo tal como los ha enviado el proveedor de identidad.

    Por ejemplo, si el proveedor de identidad transmite el nombre del usuario conectado en un atributo denominado "GivenName", esto es lo que usted deberá escribir en el campo "First name".

    Si por algún motivo el proveedor de identidad no enviara todos estos elementos, deje los campos correspondientes en blanco. La plataforma los generará automáticamente a partir de los demás atributos disponibles.

  6. Si lo desea, especifique una condición de acceso.

    La primera casilla es el nombre del atributo que se examinará y el segundo es el valor de ese atributo. Si solo desea comprobar la presencia de un atributo, sin restricción de valor alguna, deje la segunda casilla en blanco.

    Por ejemplo, si el proveedor de identidad envía una lista de "Roles" para los usuarios y desea comprobar que solo puedan acceder los usuarios que tengan un rol, introduzca "Roles" en la primera casilla bajo "Acceso condicional". Si desea que solo puedan conectarse al dominio los usuarios con el rol "DataAccess", introduzca "DataAccess" en la segunda casilla.

  7. Configurar opcionalmente el inicio de sesión SSO (Single Sign-On) automático

    La configuración del inicio de sesión SSO (Single Sign-On) automático se encuentra en la página de seguridad de la interfaz de configuración del dominio.

SAML auto-sso configuration interface in the anonymous access section of the security configuration page

Configurar el proveedor de identidad

La configuración del proveedor de identidad varía en función de la implementación, pero siempre es necesario importar el documento de metadatos de proveedor de identidad para hacer posible la federación de identidades.

Puede descargar el documento de metadatos del dominio OpenDataSoft en https://<SU_DOMINIO>.opendatasoft.com/saml2/metadata.xml.

Utilizar atributos de usuario para filtrar datos

Mediante la función #attr, se pueden filtrar los registros de un conjunto de datos de modo que solo se devuelvan los registros que coincidan con un valor establecido en los atributos de usuario enviados por el IdP. En los ejemplos siguientes, suponemos que tenemos los 3 usuarios con los nombres de usuario y atributos SAML user-country y user-language respectivos que figuran en la tabla siguiente.

Usuario

user-country user-language
User1

Francia

Francés

User2

Canadá

Francés

User3

Estados Unidos

Inglés

Y un conjunto de datos con los registros indicados en la tabla siguiente.

country

Idioma

message
Worldwide

Inglés

Hello world

Francia

Francés

Bonjour à tous les Français

Canadá

Francés

Bonjour à tous les Canadiens

Canadá

Inglés

Hello to all Canadians

Estados Unidos

Inglés

Hello to all Americans

Podemos restringir estos usuarios de modo que solo vean los mensajes que son válidos para sus países respectivos, con la consulta #attr(country, user-country).

User1 ve

country

Idioma

message

Francia

Francés

Bonjour à tous les Français

User2 ve

country

Idioma

message

Canadá

Francés

Bonjour à tous les Canadiens

Canadá

Inglés

Hello to all Canadians

User3 ve

country

Idioma

message

Estados Unidos

Inglés

Hello to all Americans

También podemos restringir estos usuarios a fin de que solo vean los mensajes que están en su idioma respectivo, con la consulta #attr(language, user-language).

User1 ve

country

Idioma

message

Francia

Francés

Bonjour à tous les Français

Canadá

Francés

Bonjour à tous les Canadiens

User2 ve

country

Idioma

message

Francia

Francés

Bonjour à tous les Français

Canadá

Francés

Bonjour à tous les Canadiens

User3 ve

country

Idioma

message
Worldwide

Inglés

Hello world

Estados Unidos

Inglés

Hello to all Americans

Al ser una función del lenguaje de consulta, también se puede agrupar con los operadores habituales; por ejemplo, podemos restringir los usuarios para que solo vean los mensajes adecuados para su país e idioma con la consulta #attr(language, user-language) AND #attr(country, user-country).

User1 ve

country

Idioma

message

Francia

Francés

Bonjour à tous les Français

User2 ve

country

Idioma

message

Canadá

Francés

Bonjour à tous les Canadiens

User3 ve

country

Idioma

message

Estados Unidos

Inglés

Hello to all Americans