Aller au contenu

Configuration - SSO (Single Sign-On)

Galigeo supporte deux méthodes de SSO :

  • OAuth2 - configurable via l'interface d'administration
  • SAML V2 - configurable via le fichier gaia.properties

OAuth2

Fournisseurs supportés

  • Google
  • Microsoft (Azure AD / Entra ID)
  • Salesforce
  • Salesforce Sandbox
  • ArcGIS Online

Prérequis

  • Licence OAuth2 activée sur votre instance Galigeo
  • Accès administrateur à Galigeo

Étape 1 : Créer une application sur le fournisseur

Enregistrez une nouvelle application OAuth2 sur la console développeur du fournisseur choisi :

Fournisseur Console développeur
Google Google Cloud Console
Microsoft Portail Azure - Inscriptions d'applications
Salesforce Salesforce Setup - App Manager
ArcGIS Online ArcGIS for Developers

Lors de la configuration de l'application, définissez l'URI de redirection (callback URL) sur :

http(s)://<SERVER>:<PORT>/Galigeo/oauth/callback

Étape 2 : Configurer OAuth2 dans Galigeo

  1. Connectez-vous à Galigeo en tant qu'administrateur
  2. Accédez à Administration > oauth2
  3. Cochez Enabled
  4. Sélectionnez le type de fournisseur dans la liste déroulante
  5. Saisissez le Client ID obtenu auprès du fournisseur
  6. Saisissez le Client Secret obtenu auprès du fournisseur
  7. (Optionnel) Saisissez l'Organization ID — requis pour Microsoft (il s'agit du Tenant ID Azure AD)
  8. L'URI de callback est affichée automatiquement — vérifiez qu'elle correspond à celle configurée chez le fournisseur
  9. Cliquez sur Sauvegarder

Résultat

  • Un bouton SSO apparaît sur la page de connexion Galigeo
  • L'utilisateur est redirigé vers le fournisseur pour s'authentifier
  • Après authentification, l'utilisateur est redirigé vers Galigeo

SAML V2

Prérequis

  • Un Identity Provider (IdP) compatible SAML 2.0 : Keycloak, ADFS, CyberArk, PingIdentity, Okta, etc.

Étape 1 : Configurer l'Identity Provider

Enregistrez Galigeo comme Service Provider (SP) dans votre IdP avec les paramètres suivants :

  • Entity ID : valeur de SAML_SPID_FROM_IDP (défaut : Galigeo)
  • ACS URL (Assertion Consumer Service) :
  • Mono-organisation : http(s)://<SERVER>:<PORT>/Galigeo/saml/acs
  • Multi-organisation : http(s)://<SERVER>:<PORT>/Galigeo/feature/saml2/acs/<orgId>

Important : Pour le multi-organisation, le chemin doit utiliser saml2 (et non saml). Utiliser /feature/saml/acs/<orgId> ne fonctionnera pas.

Étape 2 : Configurer Galigeo

Accédez à Administration > Paramètres techniques > Paramètres avancés et configurez ces paramètres :

Propriété Obligatoire Défaut Description
SAML_ENABLED Oui false Activer le SSO SAML
SAML_IDP_BINDING_URL Oui URL SSO de l'IdP
SAML_SPID_FROM_IDP Oui Galigeo Entity ID du SP enregistré dans l'IdP
SAML_SP_ACS_URL Oui {scheme}://{server}:{port}/{context}/saml/acs URL ACS (doit correspondre à celle déclarée dans l'IdP)
SAML_IDP_INITIATED Non false true = flux initié par l'IdP (pas de AuthnRequest envoyé)
SAML_REQUEST_RELAY_STATE Non {appContext} RelayState envoyé dans la requête SAML
SAML_RESP_PARAM Non SAMLResponse Nom du paramètre HTTP contenant la réponse SAML
SAML_USE_NAMEID_4_LOGIN Non true true = utiliser NameID comme login, false = utiliser un attribut personnalisé
SAML_USER_ATTRIBUTE Non userId Attribut SAML pour le login (si SAML_USE_NAMEID_4_LOGIN=false)
SAML_AUTOMATIC_ADD_USER Non true Créer automatiquement l'utilisateur dans Galigeo s'il n'existe pas
SAML_ASSERTION_SIGNATURE_CHECK Non false Vérifier la signature de l'assertion SAML
SAML_DIGITAL_SIGNATURE_CERT_FILE Non Chemin du certificat public de l'IdP (requis si la vérification de signature est activée)

note Vous pouvez aussi éditer le fichier <GALIGEO_HOME>/config/gaia.properties et modifier les paramètres

Exemple de configuration minimale

SAML_ENABLED=true
SAML_IDP_BINDING_URL=https://idp.example.com/saml/sso
SAML_SPID_FROM_IDP=Galigeo
SAML_SP_ACS_URL=https://galigeo.example.com/Galigeo/saml/acs

Multi-organisation

Chaque organisation peut avoir sa propre configuration SAML dans :

<GALIGEO_HOME>/orgs/{orgId}/config/gaia.properties

URL ACS multi-organisation

Pour les configurations multi-org, le SAML_SP_ACS_URL doit inclure l'identifiant de l'organisation afin que Galigeo puisse rediriger l'utilisateur vers la bonne organisation après authentification.

Utilisez l'endpoint /feature/saml2/acs/{orgId} :

SAML_SP_ACS_URL=http(s)://<SERVER>:<PORT>/Galigeo/feature/saml2/acs/<orgId>

Important : Le chemin doit utiliser saml2 (et non saml). Utiliser /feature/saml/acs/<orgId> provoquera une boucle de redirection via la page de login avec orgId=null.

URL d'authentification multi-organisation

Pour initier l'authentification pour une organisation spécifique :

/Galigeo/saml/authn?orgId=<orgId>

Si l'orgId n'est pas fourni ou ne peut pas être résolu, Galigeo se rabat sur l'organisation default.

Flux d'authentification (initié par le SP)

Mono-organisation

  1. L'utilisateur accède à /Galigeo/saml/authn
  2. Galigeo génère un AuthnRequest et redirige vers l'IdP
  3. L'utilisateur s'authentifie sur l'IdP
  4. L'IdP envoie la SAMLResponse à /Galigeo/saml/acs
  5. Galigeo valide l'assertion, crée la session et redirige vers le portail

Multi-organisation

  1. L'utilisateur accède à /Galigeo/saml/authn?orgId=<orgId>
  2. Galigeo charge la configuration SAML de l'organisation spécifiée
  3. Galigeo génère un AuthnRequest avec l'URL ACS spécifique à l'org et redirige vers l'IdP
  4. L'utilisateur s'authentifie sur l'IdP
  5. L'IdP envoie la SAMLResponse à /Galigeo/feature/saml2/acs/<orgId>
  6. Galigeo valide l'assertion, crée la session et redirige vers le portail de l'organisation

Vérification de la signature

Deux types de signatures existent dans SAML, servant des objectifs différents :

Direction Qui signe Qui vérifie Objectif
AuthnRequest (SP → IdP) Galigeo IdP Prouve que la requête provient du SP légitime
Assertion (IdP → SP) IdP Galigeo Prouve que l'assertion provient de l'IdP légitime

Signature de l'assertion (IdP → SP) — recommandée

C'est la signature la plus critique. Elle empêche un attaquant de forger une assertion SAML pour usurper l'identité de n'importe quel utilisateur.

Si SAML_ASSERTION_SIGNATURE_CHECK=true :

  1. Exportez le certificat public de signature de l'IdP (fichier .crt au format PEM)
  2. Placez-le dans <GALIGEO_HOME>/resources/
  3. Renseignez le chemin complet dans SAML_DIGITAL_SIGNATURE_CERT_FILE

Signature de l'AuthnRequest (SP → IdP) — optionnelle

Galigeo signe ses AuthnRequest par défaut. L'IdP doit disposer du certificat public de Galigeo pour vérifier la signature. Si l'IdP rejette la signature, vous pouvez : - Importer le certificat SP de Galigeo dans l'IdP, ou - Désactiver la vérification de signature de l'AuthnRequest dans l'IdP (consultez la documentation de votre IdP)

Dépannage

Symptôme Cause Solution
"Invalid requester" sur l'IdP SAML_SPID_FROM_IDP ne correspond pas au Client ID dans l'IdP Vérifiez que les deux valeurs sont identiques (sensible à la casse)
"Invalid signature on document" sur l'IdP L'IdP ne peut pas vérifier la signature de l'AuthnRequest Désactivez la vérification de signature de l'AuthnRequest dans l'IdP, ou importez le certificat SP de Galigeo
"Invalid redirect URI" sur l'IdP L'URL ACS n'est pas dans les redirect URIs autorisées Ajoutez l'URL ACS exacte dans les redirect URIs autorisées de l'IdP
L'utilisateur arrive sur orgId=default après le login L'orgId est perdu pendant le flux SAML Utilisez /feature/saml2/acs/{orgId} comme URL ACS (et non /saml/acs/{orgId}). Vérifiez que le chemin utilise saml2 et non saml
orgId=null dans la redirection Le SAML_SP_ACS_URL n'inclut pas l'orgId Renseignez SAML_SP_ACS_URL à …/feature/saml2/acs/{orgId} dans le gaia.properties de l'org
404 sur l'URL ACS Mauvais chemin d'URL (ex : /feature/saml/acs/… au lieu de /feature/saml2/acs/…) Le chemin correct est /feature/saml2/… — vérifiez que le 2 est présent
Utilisateur non créé après le login SAML_AUTOMATIC_ADD_USER=false Mettez à true ou créez manuellement l'utilisateur dans Galigeo avant le login