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
- 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 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
- Connectez-vous à Galigeo en tant qu'administrateur
- Accédez à Administration > oauth2
- Cochez Enabled
- Sélectionnez le type de fournisseur dans la liste déroulante
- Saisissez le Client ID obtenu auprès du fournisseur
- Saisissez le Client Secret obtenu auprès du fournisseur
- (Optionnel) Saisissez l'Organization ID — requis pour Microsoft (il s'agit du Tenant ID Azure AD)
- L'URI de callback est affichée automatiquement — vérifiez qu'elle correspond à celle configurée chez le fournisseur
- 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 nonsaml). 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) |
Vous pouvez aussi éditer le fichier
<GALIGEO_HOME>/config/gaia.propertieset 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 nonsaml). Utiliser/feature/saml/acs/<orgId>provoquera une boucle de redirection via la page de login avecorgId=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
- L'utilisateur accède à
/Galigeo/saml/authn - Galigeo génère un AuthnRequest et redirige vers l'IdP
- L'utilisateur s'authentifie sur l'IdP
- L'IdP envoie la SAMLResponse à
/Galigeo/saml/acs - Galigeo valide l'assertion, crée la session et redirige vers le portail
Multi-organisation
- L'utilisateur accède à
/Galigeo/saml/authn?orgId=<orgId> - Galigeo charge la configuration SAML de l'organisation spécifiée
- Galigeo génère un AuthnRequest avec l'URL ACS spécifique à l'org et redirige vers l'IdP
- L'utilisateur s'authentifie sur l'IdP
- L'IdP envoie la SAMLResponse à
/Galigeo/feature/saml2/acs/<orgId> - 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 :
- Exportez le certificat public de signature de l'IdP (fichier
.crtau format PEM) - Placez-le dans
<GALIGEO_HOME>/resources/ - 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 |