Fédérer les identités avec SAML

Certaines organisations disposent déjà d’un service de répertoire d’utilisateurs qui gère l’authentification et les permissions de leurs utilisateurs. Elles ne voient pas les avantages que peuvent apporter les fonctionnalités de gestion des utilisateurs intégrées à OpenDataSoft. Afin de répondre à ce cas d’utilisation, la plateforme OpenDataSoft prend en charge les fournisseurs d’identité (IdP) externes à l’aide de la norme SAMLv2. Il est ainsi possible de mettre en œuvre une fédération des identités entre votre domaine, qui fera office de fournisseur de services, et cet IdP. Cette fédération permettra aux utilisateurs de votre 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). Ce type de fédération permettra un accès des utilisateurs selon 2 modes différents : le mode transient, avec lequel les utilisateurs sont créés à la volée une fois qu’ils sont validés par l’IdP, et le mode lié, avec lequel un compte utilisateur OpenDataSoft est lié à une identité SAML via un ensemble de propriétés connues par l’IdP. Ces deux modes peuvent coexister au sein d’un domaine, cependant un utilisateur peut se connecter par l’un ou l’autre de ces deux modes uniquement.

Mode transient

En mode transient, 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 transient sera créé pour l’utilisateur, en se basant sur les 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) et le mappeur d’attributs (les paramètres correspondant au prénom, au nom de famille et à l’adresse e-mail de l’utilisateur). Ces utilisateurs transients disposent des permissions pour explorer les jeux de données publics du domaine. Des permissions supplémentaires peuvent être octroyées à ces utilisateurs en utilisant le groupe générique Utilisateurs SAML. Les utilisateurs transients ne peuvent pas disposer de permissions relatives à des jeux de données individuels ni être ajoutés à des groupes (autres que le groupe Utilisateurs SAML, auquel ils sont automatiquement ajoutés).

Le mode transient peut être complètement désactivé grâce à l’option “Désactiver l’authentification en mode transient” dans la configuration SAML. Si le mode transient est désactivé, seuls les utilisateurs liés pourront se connecter via SAML.

Mode lié

En mode 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 octroyer les mêmes permissions et être ajoutés aux mêmes groupes que les utilisateurs normaux (car ils sont des utilisateurs normaux). En outre, ils sont automatiquement ajoutés au groupe Utilisateurs SAML. Ce mode permet un contrôle plus précis des permissions, tout en conservant la plupart des avantages que propose le mode transient. Le seul inconvénient est qu’il est nécessaire pour les utilisateurs de créer un compte sur le domaine avant de le lier à leur identité SAML. Il existe deux 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 la création du compte 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 la plupart des pages 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:///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