Fédérer les identités avec SAML

Certaines organisations disposent déjà d'un service d'annuaire d'utilisateurs qui gère l'authentification et les permissions de leurs utilisateurs, et ne voient pas les avantages que peuvent apporter les fonctionnalités de gestion des utilisateurs intégrées à OpenDataSoft.

Pour répondre à ce cas d'utilisation, la plateforme OpenDataSoft prend en charge les fournisseurs d'identité (IdP) externes via le standard SAMLv2. Il est ainsi possible de mettre en œuvre une fédération d'identités entre un domaine, qui fera office de fournisseur de services, et cet IdP. Cette fédération permettra aux utilisateurs d'un domaine de se connecter à la plateforme via le fournisseur d'identité, et, le cas échéant, de réutiliser leur connexion active auprès de celui-ci afin de créer une authentification unique SSO.

Lorsqu'un fournisseur d'identités SAML est configuré sur un domaine, un utilisateur peut appartenir à 3 catégories.

  • Un utilisateur OpenDataSoft standard qui a été invité par email ou s'est inscrit sur un domaine : cet utilisateur se connecte sur le domaine grâce à l'interface de connexion standard avec son nom d'utilisateur et son mot de passe OpenDataSoft habituels, et le compte est accessible dans tout le réseau OpenDataSoft. Les utilisateurs OpenDataSoft sont représentés sur la plateforme par le pictogramme icon-world.

  • Un utilisateur local qui s'authentifie via l'IdP de l'organisation : cet utilisateur se connecte sur le domaine exclusivement via l'IdP de l'organisation, et n'étant disponible que sur un domaine précis, il peut avoir un accès limité à certaines fonctionnalités basées sur le réseau OpenDataSoft. Les utilisateurs locaux sont représentés sur la plateforme par le pictogramme icon-id-card.

  • Un utilisateur lié qui a un compte OpenDataSoft standard associé sur ce domaine précis à une identité de l'IdP de l'organisation. Cet utilisateur est un utilisateur OpenDataSoft standard qui peut à la fois s'authentifier via l'interface de connexion OpenDataSoft et via l'IdP de l'organisation. Les utilisateurs liés étant des utilisateurs OpenDataSoft disposant de la capacité de se connecter via SAML, ils sont représentés sur la plateforme par les deux pictogrammes icon-world et icon-id-card.

Utilisateur local

Chaque utilisateur disposant d'un compte utilisateur auprès de l'IdP approuvé par un domaine, mais ne disposant pas d'un compte utilisateur OpenDataSoft, peut se connecter via le protocole SAML. Un utilisateur local sera créé pour l'utilisateur, en fonction des paramètres SAML du domaine.

Ces paramètres sont :

  • le mappeur de comptes : l'ensemble des paramètres envoyés par l'IdP permettant d'identifier un utilisateur unique,

  • le mappeur d'attributs : les paramètres correspondant au prénom, au nom de famille et à l'adresse email de l'utilisateur.

Ces utilisateurs locaux disposent des permissions pour explorer les jeux de données publics du domaine. Des permissions supplémentaires peuvent être attribuées à ces utilisateurs au niveau du domaine, pour des jeux de données individuels ou via des groupes (autres que le groupe Utilisateurs SAML, duquel ils sont automatiquement membres).

La création de nouveaux utilisateurs locaux via authentification sur l'IdP peut être désactivée en cochant l'option "Désactiver le provisioning d'utilisateurs locaux" dans la configuration SAML. Désactiver le provisioning d'utilisateurs locaux n'empêche pas les utilisateurs locaux existants de se connecter via SAML.

Utilisateur lié

Les utilisateurs disposant d'un compte utilisateur OpenDataSoft peuvent lier ce dernier à des valeurs spécifiques de l'ensemble de paramètres définis dans la configuration du mappeur de comptes.

Une fois la liaison établie, les utilisateurs qui s'identifient via le protocole SAML seront identifiés avec leur compte utilisateur OpenDataSoft. Les utilisateurs liés peuvent se voir attribuer les mêmes permissions et être ajoutés aux mêmes groupes que les utilisateurs normaux et sont des utilisateurs OpenDataSoft. En outre, ils sont automatiquement ajoutés au groupe Utilisateurs SAML.

Ce mode permet à n'importe quel utilisateur d'avoir un compte OpenDataSoft, mais de se connecter via SAML sur un domaine précis.

Il existe 2 méthodes pour lier un compte utilisateur OpenDataSoft :

  • la première consiste à cliquer sur Lier votre compte à un compte SAML sur ce domaine dans l'onglet identité des paramètres de compte utilisateur :

"Link your account to a SAML account on this domain" link in the identity tab of the user account settings
  • l'autre méthode consiste à établir la liaison lors du processus de création du compte utilisateur en cliquant sur le lien permettant de terminer l'inscription via le protocole SAML. Cette méthode permet d'accélérer le processus de création du compte utilisateur et de lier rapidement ce dernier :

Account registration in SAML enabled domains

Authentification unique automatique

La plateforme OpenDataSoft offre un mécanisme d'authentification automatique des utilisateurs lorsqu'ils visitent le domaine pour la première fois.

Le processus d'authentification SAML sera alors automatiquement démarré pour les utilisateurs anonymes comme si ils avaient cliqué sur "Se connecter avec SAML", dès lors qu'ils arrivent sur (presque) n'importe quelle page du domaine. Cette fonctionnalité n'a de sens que pour les domaines privés car cela bloque l'accès anonyme au domaine. Lorsque l'authentification unique est active, les utilisateurs qui souhaitent se connecter à la plateforme avec leurs identifiants OpenDataSoft auront la possibilité de le faire en se rendant sur la page de connection https://<platform-url>/login/

Déconnexion unique

La plateforme OpenDataSoft supporte le processus standard de déconnexion unique SAML via le binding HTTP-Redirect. Cela signifie que si le fournisseur d'identité le permet, la déconnexion d'un utilisateur connecté via SAML déclenche une déconnexion du fournisseur d'identité, et une déconnexion depuis le fournisseur d'identité déclenche une déconnexion de l'utilisateur sur la plateforme.

Configurer son domaine avec un fournisseur d'identité

  1. Rendez vous sur la page de configuration des intégrations du domaine.

Signup configuration page
  1. Activez l'option "Autoriser l'accès aux utilisateurs SAML".

SAML IDP configuration interface
  1. Collez le document de metadata de votre fournisseur d'identité dans le champ "Document de metadata de l'IDP".

  2. Si vous utilisez Microsoft Azure Active Directory comme Identity Provider, cochez la case.

  3. Si vous souhaitez désactiver le mode de connexion transient, et vous assurer que seuls des utilisateurs liés peuvent se connecter à la plateforme via SAML, cochez cette case.

  4. Renseignez l'ensemble des attributs renvoyés par l'IDP qui définissent de façon unique un utilisateur.

    Si les utilisateurs sont définis de façon unique par leur NameID saml, et que le format du NameID n'est pas transient, il n'est pas nécessaire de remplir cette option.

    Par exemple, si vos utilisateurs sont définis par l'attribut "FirstName" et "LastName", entrez "FirstName" dans la zone de texte, puis validez avec enter. Entrez ensuite "LastName" et validez avec enter.

  5. Renseignez les mappings d'attributs pour le nom d'utilisateur, le nom de famille, le prénom et l'adresse email.

    Il s'agit ici de remplir les champs correspondant avec le nom de l'attribut tel qu'envoyé par le fournisseur d'identité.

    Par exemple, si votre fournisseur d'identité renseigne le prénom de l'utilisateur qui se connecte en appellant cet attribut "FirstName", c'est ce qu'il faudra écrire dans le champ "prénom".

    Si certaines de ces informations ne sont pas fournies par votre fournisseur d'identité, laissez les champs vides. La plateforme les générera automatiquement sur base des autres attributs définis.

  6. Définissez des conditions d'accès éventuelles.

    La première zone de texte est le nom de l'attribut à vérifier, et la seconde est la valeur que cet attribut doit prendre. Si vous désirez uniquement vérifier la présence de l'attribut, vous pouvez ne pas renseigner la seconde zone de texte.

    Par exemple, si votre IdP renvoie une liste de "Roles" pour les utilisateurs, et que vous voulez que seuls les utilisateurs qui ont un rôle puissent se connecter, renseignez "Roles" dans la première zone de texte. Si vous voulez vous assurer que seuls les utilisateurs qui ont le rôle "DataAccess" aient accès au domaine, entrez "DataAccess" dans la seconde zone de texte.

  7. En option, configurer l'authentification unique

    La configuration de connexion unique automatique peut être trouvée en naviguant dans l'interface de configuration du domaine à la page sécurité.

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

Configurer le fournisseur d'identité

La configuration du fournisseur d'identité dépend de l'implémentation de celui-ci, mais elle consiste toujours en l'import du document de metadata du fournisseur de service.

Vous pouvez télécharger le document de metadata du fournisseur de services OpenDataSoft en vous rendant sur https://<VOTRE DOMAINE>.opendatasoft.com/saml2/metadata.xml

Utilisation des attributs utilisateur pour filtrer des données

La fonction #attr vous permet de filtrer les enregistrements d'un jeu de données de façon que seuls les enregistrements renvoyés soient ceux qui correspondent à une valeur définie dans les attributs utilisateur envoyés par l'IDP. Dans les exemples suivants, nous partons du principe que nous avons 3 utilisateurs avec des noms d'utilisateur et attributs SAML respectifs "user-country" et "user-language" indiqués dans le tableau suivant.

Utilisateur

user-country user-language

Utilisateur1

France

Français

Utilisateur2

Canada

Français

Utilisateur3

États-Unis

Anglais

Et un jeu de données avec des enregistrements indiqués par le tableau suivant.

pays

language message

Monde

Anglais

Hello world
France

Français

Bonjour à tous les Français
Canada

Français

Bonjour à tous les Canadiens
Canada

Anglais

Hello to all Canadians

États-Unis

Anglais

Hello to all Americans

Nous pouvons limiter ces utilisateurs de façon qu'ils voient uniquement les messages concernant leur pays respectif en utilisant la requête "#attr(country, user-country)".

Utilisateur1 voit

pays

language message
France

Français

Bonjour à tous les Français

Utilisateur2 voit

pays

language message
Canada

Français

Bonjour à tous les Canadiens
Canada

Anglais

Hello to all Canadians

Utilisateur3 voit

pays

language message

États-Unis

Anglais

Hello to all Americans

Nous pouvons également limiter ces utilisateurs de façon qu'ils voient uniquement les messages dans leur langue respective en utilisant la requête "#attr(language, user-language)".

Utilisateur1 voit

pays

language message
France

Français

Bonjour à tous les Français
Canada

Français

Bonjour à tous les Canadiens

Utilisateur2 voit

pays

language message
France

Français

Bonjour à tous les Français
Canada

Français

Bonjour à tous les Canadiens

Utilisateur3 voit

pays

language message

Monde

Anglais

Hello world

États-Unis

Anglais

Hello to all Americans

Cette fonction étant propre au langage de requête, elle peut également être combinée aux opérateurs habituels. Nous pouvons, par exemple, limiter les utilisateurs de façon qu'ils voient uniquement les messages adaptés à leur pays et à leur langue en utilisant la requête "#attr(language, user-language) AND #attr(country, user-country)".

Utilisateur1 voit

pays

language message
France

Français

Bonjour à tous les Français

Utilisateur2 voit

pays

language message
Canada

Français

Bonjour à tous les Canadiens

Utilisateur3 voit

pays

language message

États-Unis

Anglais

Hello to all Americans