Configurer SAML avec Keycloak¶
Cette page explique comment intégrer Keycloak comme fournisseur d’identité SAML pour authentifier vos utilisateurs sur Reemo.
Note
Configurer SSO dans Reemo¶
Accéder à Connecteurs SSO dans la Zone d’administration de l’instance.¶
Configurer SSO dans Organisation > Connecteurs SSO.¶
Créer le connecteur SAML côté Reemo¶
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.
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).
Cliquez sur Créer pour générer l’URL de callback du connecteur. Vous en aurez besoin dans Keycloak.
Copier l’URL de callback générée par le connecteur SAML.¶
Configurer le client SAML dans Keycloak¶
Connectez-vous à votre Admin Console Keycloak.
Sélectionnez le Realm cible dans le menu déroulant en haut à gauche.
Dans le menu de gauche, allez dans Clients > Create client.
Créer un nouveau client SAML dans Keycloak.¶
Renseignez les paramètres du client :
Client type : SAML.
Client ID :
reemo.
Renseigner le type et le Client ID.¶
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.
Renseigner les redirect URIs, la Master SAML Processing URL.¶
Sign documents : ON.
Sign assertions : ON.
Activer Sign documents et Sign assertions.¶
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 l’onglet Keys du client.¶
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
usernameusername
User Property
email
emailemail
User Attribute
fullname
fullnamefullname
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.
Configurer les mappers email, username et fullname dans les Client scopes.¶
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.
Récupérer le certificat RS256 du Realm dans Realm settings > Keys.¶
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.
Choisir Provisionner un utilisateur SAML depuis le menu Nouvel utilisateur.¶
Ajouter des utilisateurs par e-mail via la popup de provisionnement.¶
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
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.Sélectionnez Group list dans la fenêtre de configuration du mapper.
Sélectionner Group list dans la fenêtre de configuration du mapper.¶
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.
Renseigner le Name, le Group attribute name, et laisser les deux bascules sur Off.¶
Enregistrez le mapper. Il apparaît maintenant dans la liste des mappers aux côtés des autres mappers d’attributs.
Le mapper groups apparaît en tant que Group Mapper / Group list.¶
Dans Reemo
Ouvrez la fiche du connecteur SSO en allant dans Zone d’administration > Général > Connecteurs SSO.
Dans les paramètres du connecteur, allez à la section Mappage supplémentaire.
Dans le champ Collections, saisissez le nom d’attribut de groupe configuré dans Keycloak (ex.
groups), puis cliquez sur Mettre à jour.
Saisir le nom d’attribut de groupe dans le champ Collection du Mappage supplémentaire.¶
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
LogoutRequestconstruite à partir du sujet de la session, et traite aussi bien laLogoutResponserenvoyée par le fournisseur qu’unLogoutRequestque 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 simpleGET.
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é.
Sélectionner l’onglet SSO, puis cliquer sur Se connecter.¶