Configurer SAML avec Keycloak

Cette page explique comment intégrer Keycloak comme fournisseur d’identité SAML pour authentifier vos utilisateurs sur Reemo.

Note

Selon votre mode de déploiement, l’activation SSO peut se faire au niveau de l’instance (Private Cloud / On-Prem) ou au niveau de l’organisation (Public Cloud).
Les captures d’écran et libellés peuvent varier légèrement selon vos versions d’interface.

Configurer SSO dans Reemo

Cas 1 : Activation au niveau de l’instance (Private Cloud / On-Prem)
Depuis verified_user Zone d’administration > dashboard Général > passkey Connecteurs SSO, configurez SSO pour l’instance.
Accéder aux Connecteurs SSO dans la Zone d'administration de l'instance

Accéder à Connecteurs SSO dans la Zone d’administration de l’instance.

Cas 2 : Activation au niveau de l’organisation (Public Cloud)
Depuis domain Organisation > dashboard Général > passkey Connecteurs SSO, configurez SSO pour cette organisation.
Accéder aux Connecteurs SSO au niveau de l'organisation

Configurer SSO dans Organisation > Connecteurs SSO.

Créer le connecteur SAML côté Reemo

  1. Depuis verified_user Zone d’administration > domain Organisations, sélectionnez votre organisation, puis accédez à dashboard Général > passkey Connecteurs SSO et cliquez sur Nouveau connecteur > Nouveau connecteur SAML.

  2. Renseignez les champs de base :

    • Nom convivial : nom affiché à vos utilisateurs (ex. Keycloak).

    • Émetteur / ID URI de l’application : reemo.

    • Point d’entrée IP : sera complété après la configuration Keycloak.

    • URL de déconnexion de l’IdP et Protocole de déconnexion (optionnel) : voir la section Configurer la déconnexion côté fournisseur d’identité plus bas.

    • Certificat IP : sera complété après la configuration Keycloak.

    • Mappage des attributs : noms d’attributs que Reemo attend dans l’assertion SAML (par défaut email, username, fullname).

  3. Cliquez sur Créer pour générer l’URL de callback du connecteur. Vous en aurez besoin dans Keycloak.

Récupération de l'URL de callback du connecteur

Copier l’URL de callback générée par le connecteur SAML.

Configurer le client SAML dans Keycloak

  1. Connectez-vous à votre Admin Console Keycloak.

  2. Sélectionnez le Realm cible dans le menu déroulant en haut à gauche.

  3. Dans le menu de gauche, allez dans Clients > Create client.

Création d'un client SAML dans Keycloak

Créer un nouveau client SAML dans Keycloak.

  1. Renseignez les paramètres du client :

    • Client type : SAML.

    • Client ID : reemo.

Création d'un client SAML dans Keycloak

Renseigner le type et le Client ID.

  1. Dans les paramètres du client, configurez :

    • Valid redirect URIs : collez l’URL de callback du connecteur Reemo.

    • Master SAML Processing URL : collez l’URL de callback du connecteur Reemo.

    Paramètres du client SAML Keycloak

    Renseigner les redirect URIs, la Master SAML Processing URL.

    • Sign documents : ON.

    • Sign assertions : ON.

    Paramètres du client SAML Keycloak

    Activer Sign documents et Sign assertions.

  2. Allez dans l’onglet Keys du client et désactivez l’option Client signature required.

Warning

Reemo ne signe pas les requêtes SAML sortantes. Si Client signature required reste activé, Keycloak rejettera les requêtes d’authentification.

Désactiver Client signature required dans Keycloak

Désactiver Client signature required dans l’onglet Keys du client.

  1. Allez dans l’onglet Client scopes > cliquez sur le scope dédié (ex. reemo-dedicated) > Add mapper > By configuration.

    Ajoutez les mappers d’attributs suivants :

    Mapper type

    Name

    Property

    SAML Attribute Name

    User Property

    username

    username

    username

    User Property

    email

    email

    email

    User Attribute

    fullname

    fullname

    fullname

Warning

Le champ SAML Attribute Name est obligatoire sur chaque mapper. Sans lui, les attributs arrivent anonymes dans la réponse SAML et Reemo les rejette.

Warning

Keycloak ne propose pas de concaténation native de prénom et nom. Vous devez créer un attribut custom fullname sur chaque utilisateur dans la console Keycloak.

Mappers d'attributs SAML Keycloak
Mappers d'attributs SAML Keycloak
Mappers d'attributs SAML Keycloak

Configurer les mappers email, username et fullname dans les Client scopes.

  1. Récupérez le certificat X.509 et le Point d’entrée IP (SSO URL) :

    • Certificat : depuis Realm settings > Keys > ligne RS256 > bouton Certificate. Copiez le contenu base64 brut.

    • Point d’entrée IP : suit le format :

    https://[keycloak_url]/realms/[realm]/protocol/saml
    

Warning

Utilisez bien le certificat RS256 du Realm, et non celui du client. Collez uniquement le base64 brut, sinon Reemo ne pourra pas valider les assertions signées.

Certificat X.509 et URL SSO Keycloak

Récupérer le certificat RS256 du Realm dans Realm settings > Keys.

  1. Complétez le connecteur SAML de Reemo avec ces informations. Activez le connecteur (case Enabled) puis cliquez sur Update pour enregistrer.

Déclarer les utilisateurs

Deux approches sont possibles pour donner l’accès SSO aux utilisateurs.

Approche A : Provisionnement explicite depuis l’organisation
Depuis verified_user Zone d’administration > domain Organisations, sélectionnez votre organisation, puis accédez à inventory_2 Inventaire > person Utilisateurs et cliquez sur Nouvel utilisateur > Provisionner un utilisateur SAML pour ajouter des utilisateurs en renseignant leur e-mail.
Menu Nouvel utilisateur avec l'option Provisionner un utilisateur SAML

Choisir Provisionner un utilisateur SAML depuis le menu Nouvel utilisateur.

Popup d'ajout d'utilisateurs SAML par e-mail

Ajouter des utilisateurs par e-mail via la popup de provisionnement.

Approche B : Just-In-Time (JIT) Provisioning
Depuis verified_user Zone d’administration > domain Organisations, sélectionnez votre organisation, puis accédez à dashboard Général > passkey Connecteurs SSO, cliquez sur le connecteur puis activez Provisionnement Juste-à-Temps activé : les comptes sont créés automatiquement lors de la première connexion SSO réussie.
Option Just In Time Provisioning

Activer Just In Time Provisioning pour créer les comptes à la première connexion.

Gérer les droits dynamiquement depuis l’annuaire

Cette configuration permet à Reemo de lire l’appartenance de chaque utilisateur à un groupe de l’annuaire d’entreprise et d’affecter automatiquement l’accès aux collections correspondantes, sans provisionnement manuel dans Reemo.

Dans Keycloak

  1. Dans le menu Clients, ouvrez votre client (ex. reemo), allez dans l’onglet Client scopes et cliquez sur le scope dédié (ex. reemo-dedicated) > Add mapper > By configuration.

  2. Sélectionnez Group list dans la fenêtre de configuration du mapper.

Sélection du type de mapper Group list dans Keycloak

Sélectionner Group list dans la fenêtre de configuration du mapper.

  1. Configurez le mapper avec les champs suivants :

    • Name : un libellé pour ce mapper (ex. groups).

    • Group attribute name : le nom de l’attribut envoyé dans l’assertion SAML (ex. groups).

    • Single Group Attribute : Off.

    • Full group path : Off.

Formulaire de configuration du mapper Group list dans Keycloak

Renseigner le Name, le Group attribute name, et laisser les deux bascules sur Off.

  1. Enregistrez le mapper. Il apparaît maintenant dans la liste des mappers aux côtés des autres mappers d’attributs.

Liste des mappers avec l'entrée groups

Le mapper groups apparaît en tant que Group Mapper / Group list.

Dans Reemo

  1. Ouvrez la fiche du connecteur SSO en allant dans Zone d’administration > Général > Connecteurs SSO.

  2. Dans les paramètres du connecteur, allez à la section Mappage supplémentaire.

  3. Dans le champ Collections, saisissez le nom d’attribut de groupe configuré dans Keycloak (ex. groups), puis cliquez sur Mettre à jour.

Section Mappage supplémentaire dans le connecteur SSO Reemo

Saisir le nom d’attribut de groupe dans le champ Collection du Mappage supplémentaire.

  1. Dans Inventaire > Collections, sélectionnez une collection et cliquez sur Edit. Dans le champ SSO Mapping Identifier, saisissez le nom du groupe de l’annuaire correspondant.

Lors de la connexion via SAML, Reemo lit les groupes transmis par Keycloak et applique automatiquement les droits sur les collections.

Configurer la déconnexion côté fournisseur d’identité

Le connecteur SAML propose deux champs additionnels pour déconnecter automatiquement l’utilisateur de son fournisseur d’identité (IdP) au moment où il se déconnecte de Reemo : une URL de déconnexion de l’IdP et un protocole de déconnexion.

  • Redirection vers l’URL ci-dessus (par défaut) : le navigateur est simplement redirigé vers l’URL renseignée. Convient à n’importe quel fournisseur exposant un endpoint de déconnexion qui répond à une simple requête GET, sans configuration supplémentaire de son côté.

  • Déconnexion unique SAML (LogoutRequest signé) : Reemo signe une véritable requête LogoutRequest construite à partir du sujet de la session, et traite aussi bien la LogoutResponse renvoyée par le fournisseur qu’un LogoutRequest que celui-ci initierait lui-même. C’est le seul mode qui fonctionne avec un fournisseur dont l’endpoint de déconnexion est le même que celui de connexion (ex. Microsoft Entra ID, Keycloak) : cet endpoint attend une requête SAML signée, pas un simple GET.

Note

Ces deux champs sont optionnels et rétro-compatibles : le protocole vaut Redirection vers l’URL ci-dessus par défaut, donc les connecteurs existants ne changent pas de comportement. La stratégie de connexion (login) n’est jamais affectée, et un échec de déconnexion côté fournisseur ne bloque jamais la déconnexion de l’utilisateur dans Reemo.

La Déconnexion unique SAML nécessite qu’une clé de fournisseur de service existe pour ce connecteur : sans elle, il retombe automatiquement sur le mode Redirection vers l’URL ci-dessus. Reemo génère cette paire de clés par connecteur — la clé privée ne quitte jamais le serveur — et le certificat correspondant, à déclarer côté fournisseur, est affiché dans la liste des connecteurs SSO.

Warning

La Déconnexion unique SAML demande deux déclarations côté fournisseur d’identité : une URL de callback de déconnexion vers Reemo (son format dépend du fournisseur — voir le guide correspondant) et le certificat de signature du connecteur, affiché dans la liste des connecteurs SSO. Sans ces deux déclarations, le fournisseur rejette le LogoutRequest signé par Reemo.

Warning

En mode Déconnexion unique SAML, réglez l’URL de déconnexion de l’IdP selon votre fournisseur :

  • Laissez-la vide si votre fournisseur sert la déconnexion sur son endpoint de connexion (ex. Microsoft Entra ID, Keycloak). Reemo réutilise alors le Point d’entrée IP déjà configuré.

  • Renseignez-la si votre fournisseur expose un endpoint de déconnexion distinct (ex. Okta).

Warning

La déconnexion déclenchée côté fournisseur d’identité ferme la session de navigateur pour l’ensemble du fournisseur, pas seulement pour Reemo. Un utilisateur qui a d’autres onglets ouverts sur le même fournisseur (ex. les autres services Microsoft) en sera également déconnecté.

Sur Keycloak, l’endpoint de déconnexion est le même que celui de connexion : en mode Déconnexion unique SAML, l’URL de déconnexion de l’IdP peut donc rester vide côté Reemo.

Se connecter via SAML

Une fois le connecteur actif et les utilisateurs déclarés (ou JIT activé), vos utilisateurs peuvent se connecter :

  • Accès général à votre portail (Private Cloud / On-Prem) :

    https://[portal_url]/
    
  • Accès direct à l’organisation (Public Cloud) :

    https://[portal_url]/login/[organization_shortname]
    

Sur l’écran de connexion, sélectionnez l’onglet SSO, puis cliquez sur Se connecter pour être redirigé vers le fournisseur d’identité.

Onglet SSO sur l'écran de connexion

Sélectionner l’onglet SSO, puis cliquer sur Se connecter.