Aperçu
Fess prend en charge l’authentification Single Sign-On (SSO) en utilisant l’authentification intégrée Windows (SPNEGO/Kerberos). En utilisant l’authentification intégrée Windows, les utilisateurs connectés à un ordinateur membre d’un domaine Windows peuvent accéder à Fess sans opérations de connexion supplémentaires.
Fonctionnement de l’authentification intégrée Windows
Dans l’authentification intégrée Windows, Fess utilise le protocole SPNEGO (Simple and Protected GSSAPI Negotiation Mechanism) pour l’authentification Kerberos.
L’utilisateur se connecte au domaine Windows
L’utilisateur accède à Fess
Fess envoie un défi SPNEGO
Le navigateur obtient un ticket Kerberos et l’envoie au serveur
Fess valide le ticket et récupère le nom d’utilisateur
Les informations de groupe de l’utilisateur sont récupérées via LDAP
L’utilisateur est connecté et les informations de groupe sont appliquées à la recherche basée sur les rôles
Pour l’intégration avec la recherche basée sur les rôles, consultez Configuration de la recherche basée sur les rôles.
Prérequis
Avant de configurer l’authentification intégrée Windows, vérifiez les prérequis suivants :
Fess 15.7 ou supérieur est installé
Un serveur Active Directory (AD) est disponible
Le serveur Fess est accessible depuis le domaine AD
Vous avez la permission de configurer les noms de principal de service (SPN) dans AD
Un compte pour récupérer les informations utilisateur via LDAP est disponible
Configuration côté Active Directory
Enregistrement du nom de principal de service (SPN)
Vous devez enregistrer un SPN pour Fess dans Active Directory. Ouvrez une invite de commandes sur un ordinateur Windows membre du domaine AD et exécutez la commande setspn.
Exemple :
Pour vérifier l’enregistrement :
Note
Après l’enregistrement du SPN, si vous avez exécuté la commande sur le serveur Fess, déconnectez-vous de Windows et reconnectez-vous.
Configuration de base
Activation du SSO
Pour activer l’authentification intégrée Windows, ajoutez le paramètre suivant dans app/WEB-INF/conf/system.properties :
Fichier de configuration Kerberos
Créez app/WEB-INF/classes/krb5.conf avec la configuration Kerberos.
Note
Remplacez EXAMPLE.LOCAL par votre nom de domaine AD (en majuscules) et AD-SERVER.EXAMPLE.LOCAL par le nom d’hôte de votre serveur AD.
Fichier de configuration de connexion
Créez app/WEB-INF/classes/auth_login.conf avec la configuration de connexion JAAS.
Note
Les noms de fichier par défaut de krb5.conf et auth_login.conf sont définis respectivement par spnego.krb5.conf et spnego.login.conf, mais ces fichiers doivent impérativement être créés. Si ces fichiers sont absents du classpath, l’initialisation de SPNEGO échoue et Fess ne peut pas démarrer.
Paramètres requis
Ajoutez les paramètres suivants à app/WEB-INF/conf/system.properties.
| Propriété | Description | Valeur par défaut |
|---|---|---|
spnego.preauth.username | Nom d’utilisateur de connexion AD | (Requis) |
spnego.preauth.password | Mot de passe de connexion AD | (Requis) |
spnego.krb5.conf | Chemin du fichier de configuration Kerberos | krb5.conf |
spnego.login.conf | Chemin du fichier de configuration de connexion | auth_login.conf |
Paramètres optionnels
Les paramètres suivants peuvent être ajoutés si nécessaire.
| Propriété | Description | Valeur par défaut |
|---|---|---|
spnego.login.client.module | Nom du module client | spnego-client |
spnego.login.server.module | Nom du module serveur | spnego-server |
spnego.allow.basic | Autoriser l’authentification Basic | true |
spnego.allow.unsecure.basic | Autoriser l’authentification Basic non sécurisée | true |
spnego.prompt.ntlm | Revenir à l’authentification Basic lors de la réception d’un jeton NTLM | true |
spnego.allow.localhost | Autoriser l’accès depuis localhost | true |
spnego.allow.delegation | Autoriser la délégation | false |
spnego.exclude.dirs | Répertoires exclus de l’authentification (séparés par des virgules) | (Aucun) |
spnego.logger.level | Niveau de log interne de la bibliothèque SPNEGO (1 =FINEST, 2 =FINER, 3 =FINE, 4 =CONFIG, 6 =WARNING, 7 =SEVERE ; toute autre valeur, y compris 0 et 5, est traitée comme INFO) | (Automatique) |
Avertissement
spnego.allow.unsecure.basic=true peut envoyer des identifiants encodés en Base64 sur des connexions non chiffrées. Pour les environnements de production, il est fortement recommandé de définir cette valeur sur false et d’utiliser HTTPS.
Note
Lorsque spnego.prompt.ntlm=true (valeur par défaut), spnego.allow.basic doit également être true. Si vous définissez spnego.allow.basic=false, vous devez également définir spnego.prompt.ntlm=false. Si cette condition n’est pas respectée, une erreur se produit lors de l’initialisation de SPNEGO.
Note
spnego.logger.level contrôle le niveau de log du logger interne de la bibliothèque SPNEGO (le logger java.util.logging nommé Spnego). Si ce paramètre n’est pas défini, le niveau est déterminé automatiquement en fonction du niveau de log de Fess.
Configuration LDAP
La configuration LDAP est requise pour récupérer les informations de groupe des utilisateurs authentifiés via l’authentification intégrée Windows. Configurez les paramètres LDAP dans le panneau d’administration de Fess sous « Système » -> « Général ».
| Élément | Exemple |
|---|---|
| URL LDAP | ldap://AD-SERVER.example.local:389 |
| Base DN | dc=example,dc=local |
| Bind DN | svc_fess@example.local |
| Mot de passe | Mot de passe de l’utilisateur d’accès AD |
| User DN | %s@example.local |
| Filtre de compte | (&(objectClass=user)(sAMAccountName=%s)) |
| Attribut memberOf | memberOf |
Exemples de configuration
Configuration minimale (pour les tests)
Voici un exemple de configuration minimale pour un environnement de test.
app/WEB-INF/conf/system.properties :
app/WEB-INF/classes/krb5.conf :
app/WEB-INF/classes/auth_login.conf :
Configuration recommandée (pour la production)
Voici un exemple de configuration recommandée pour les environnements de production.
app/WEB-INF/conf/system.properties :
Note
Si vous définissez spnego.allow.basic=false, vous devez également définir spnego.prompt.ntlm=false. La valeur par défaut de spnego.prompt.ntlm est true ; omettre ce paramètre provoque une erreur lors de l’initialisation.
Dépannage
Problèmes courants et solutions
La boîte de dialogue d’authentification apparaît
Vérifiez que le serveur Fess est ajouté à la zone Intranet local dans les paramètres du navigateur
Vérifiez que « Activer l’authentification Windows intégrée » est activé
Vérifiez que le SPN est correctement enregistré (
setspn -L <nom d'utilisateur>)
Des erreurs d’authentification se produisent
Vérifiez que le nom de domaine (majuscules) et le nom du serveur AD dans
krb5.confsont correctsVérifiez que
spnego.preauth.usernameetspnego.preauth.passwordsont correctsVérifiez la connectivité réseau vers le serveur AD
Impossible de récupérer les informations de groupe
Vérifiez que les paramètres LDAP sont corrects
Vérifiez que le Bind DN et le mot de passe sont corrects
Vérifiez que l’utilisateur appartient à des groupes dans AD
Paramètres de débogage
Pour investiguer les problèmes, vous pouvez afficher des logs détaillés liés à SPNEGO.
Pour afficher les logs détaillés internes de la bibliothèque SPNEGO, ajoutez ce qui suit à app/WEB-INF/conf/system.properties. spnego.logger.level=1 produit les logs les plus détaillés (FINEST).
Pour afficher les logs détaillés du traitement SPNEGO côté Fess (package org.codelibs.fess.sso.spnego), ajoutez le logger suivant à app/WEB-INF/classes/log4j2.xml :
Note
Les logs de la bibliothèque SPNEGO elle-même sont émis via java.util.logging et se contrôlent avec spnego.logger.level, non via log4j2.xml. Les logs du traitement d’intégration côté Fess se contrôlent via le logger log4j2.xml.
Référence
Configuration de la recherche basée sur les rôles - Configuration de la recherche basée sur les rôles
Configuration SSO avec authentification SAML - Configuration SSO avec authentification SAML
Configuration SSO avec OpenID Connect - Configuration SSO avec authentification OpenID Connect
Configuration SSO avec Entra ID - Configuration SSO avec Microsoft Entra ID