Federar identidades con SAML

Precaución

La disponibilidad de esta función depende de la licencia del dominio Opendatasoft.

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 un dominio, que actuará como proveedor de servicio, y este IdP. Esta federación permite a los usuarios de un 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.

Cuando hay un proveedor de identidad SAML configurado en un dominio, un usuario puede pertenecer a 3 categorías.

  • Un usuario de Opendatasoft estándar invitado por correo electrónico o registrado en un dominio: este usuario inicia la sesión en el dominio mediante la interfaz de inicio de sesión estándar con su nombre de usuario y contraseña de Opendatasoft habitual, y la cuenta está accesible en toda la red de Opendatasoft. Los usuarios de Opendatasoft se representan en la plataforma con el pictograma icon-world.

  • Un usuario local que se autentica por medio del IdP de la organización: este usuario inicia la sesión en el dominio exclusivamente a través del IdP de la organización y, como solo está disponible en un dominio específico, puede tener limitado el uso de funciones basadas en la red de Opendatasoft. Los usuarios locales se representan en la plataforma con el pictograma icon-id-card.

  • Un usuario vinculado que tiene una cuenta Opendatasoft estándar, pero asociada en este dominio específico a una identidad del IdP de la organización. Este usuario es un usuario de Opendatasoft estándar que se puede autenticar tanto por medio de la interfaz de inicio de sesión de Opendatasoft como del IdP de la organización. Dado que los usuarios vinculados son usuarios de Opendatasoft con posibilidades de autenticación SAML, se representan en la plataforma con los pictogramas icon-world y icon-id-card.

Usuario local

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. En la primera conexión, se creará un usuario local para el usuario a partir de los valores de configuración SAML del dominio.

Estos valores son:

  • el mapeador de cuentas: un conjunto de parámetros enviados por el IdP que identifican un usuario de forma exclusiva;

  • el mapeador de atributos: los parámetros correspondientes al nombre, apellido y dirección de correo electrónico del usuario.

Estos usuarios locales tienen permiso para explorar los conjuntos de datos públicos del dominio de forma predeterminada. Se pueden conceder permisos adicionales a estos usuarios a nivel de dominio, en conjuntos de datos individuales o mediante grupos (al margen del grupo de usuarios de SAML, del cual son automáticamente miembros).

La creación de nuevos usuarios locales a través de la autenticación de un IdP se puede desactivar mediante la casilla de selección "Desactivar aprovisionamiento de usuarios locales" en la configuración de SAML. El hecho de desactivar el aprovisionamiento de usuarios locales no impedirá a los usuarios locales existentes iniciar la sesión mediante SAML.

Usuario 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 demás usuarios y se consideran usuarios de Opendatasoft. También son automáticamente miembros del grupo de usuarios de SAML.

Este modo permite a cualquier usuario tener una cuenta Opendatasoft, pero seguir conectándose por SAML en un dominio específico.

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

Seleccionar la página de inicio de sesión predeterminada

La plataforma Opendatasoft permite elegir la página de inicio de sesión que se mostrará a los usuarios cuando hagan clic en un enlace de inicio de sesión o intenten acceder a una página restringida.

Si se selecciona como página predeterminada la página de inicio de sesión IdP, el flujo de autenticación SAML se iniciará automáticamente en el caso de que un usuario anónimo haga clic en el enlace de inicio de sesión o intente acceder a una página restringida, como puede ser el backoffice. Si se selecciona la página de inicio de sesión IdP, los usuarios que deseen conectarse a la plataforma con las credenciales de Opendatasoft tienen 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.

  2. 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 la creación de usuarios locales, y asegurarse así de que únicamente los usuarios existentes se conecten a la plataforma con SAML, marque la casilla "Desactivar aprovisionamiento de usuarios locales".

  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. 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.Si se dejan ambos campos vacíos, no se establece ninguna condición y cualquier inicio de sesión satisfactorio en el lado del IdP desencadenará un inicio de sesión en el dominio Opendatasoft.

    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. Especifique la dirección URL en la que el usuario puede revisar su perfil de usuario en el IdP. Cuando se haya especificado, el usuario visualizará un enlace a esta dirección URL en la página de su cuenta de usuario. Si se deja en blanco, no se mostrará ninguna dirección URL al usuario en la página de su cuenta.

  8. Especifique un ID de entidad personalizado para el proveedor de servicios. Si se deja en blanco la dirección URL del proveedor de servicios, se utilizará el documento de metadatos como ID de entidad. Si su IdP no admite ID de entidad en formato URL, puede establecer cualquier ID de entidad aquí.

  9. Personalice el texto del vínculo de inicio de sesión de SAML. Si se deja en blanco, se visualizará un mensaje predeterminado localizado.

  10. Configurar opcionalmente la página de inicio predeterminada

La configuración de la página de inicio de sesión predeterminada se encuentra en la página de seguridad de la interfaz de configuración del dominio.

Default login page selection interface in 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