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.4 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.
setspn -S HTTP/<nom d'hôte du serveur Fess> <utilisateur d'accès AD>
Exemple :
setspn -S HTTP/fess-server.example.local svc_fess
Pour vérifier l’enregistrement :
setspn -L <utilisateur d'accès AD>
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 :
sso.type=spnego
Fichier de configuration Kerberos
Créez app/WEB-INF/classes/krb5.conf avec la configuration Kerberos.
[libdefaults]
default_realm = EXAMPLE.LOCAL
default_tkt_enctypes = aes128-cts rc4-hmac des3-cbc-sha1 des-cbc-md5 des-cbc-crc
default_tgs_enctypes = aes128-cts rc4-hmac des3-cbc-sha1 des-cbc-md5 des-cbc-crc
permitted_enctypes = aes128-cts rc4-hmac des3-cbc-sha1 des-cbc-md5 des-cbc-crc
[realms]
EXAMPLE.LOCAL = {
kdc = AD-SERVER.EXAMPLE.LOCAL
default_domain = EXAMPLE.LOCAL
}
[domain_realm]
example.local = EXAMPLE.LOCAL
.example.local = EXAMPLE.LOCAL
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.
spnego-client {
com.sun.security.auth.module.Krb5LoginModule required;
};
spnego-server {
com.sun.security.auth.module.Krb5LoginModule required
storeKey=true
isInitiator=false;
};
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 | Afficher l’invite NTLM | true |
spnego.allow.localhost | Autoriser l’accès 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 (0-7) | (Auto) |
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.
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 :
# Activer SSO
sso.type=spnego
# Paramètres SPNEGO
spnego.preauth.username=svc_fess
spnego.preauth.password=your-password
app/WEB-INF/classes/krb5.conf :
[libdefaults]
default_realm = EXAMPLE.LOCAL
default_tkt_enctypes = aes128-cts rc4-hmac des3-cbc-sha1 des-cbc-md5 des-cbc-crc
default_tgs_enctypes = aes128-cts rc4-hmac des3-cbc-sha1 des-cbc-md5 des-cbc-crc
permitted_enctypes = aes128-cts rc4-hmac des3-cbc-sha1 des-cbc-md5 des-cbc-crc
[realms]
EXAMPLE.LOCAL = {
kdc = AD-SERVER.EXAMPLE.LOCAL
default_domain = EXAMPLE.LOCAL
}
[domain_realm]
example.local = EXAMPLE.LOCAL
.example.local = EXAMPLE.LOCAL
app/WEB-INF/classes/auth_login.conf :
spnego-client {
com.sun.security.auth.module.Krb5LoginModule required;
};
spnego-server {
com.sun.security.auth.module.Krb5LoginModule required
storeKey=true
isInitiator=false;
};
Configuration recommandée (pour la production)
Voici un exemple de configuration recommandée pour les environnements de production.
app/WEB-INF/conf/system.properties :
# Activer SSO
sso.type=spnego
# Paramètres SPNEGO
spnego.preauth.username=svc_fess
spnego.preauth.password=your-secure-password
spnego.krb5.conf=krb5.conf
spnego.login.conf=auth_login.conf
# Paramètres de sécurité (production)
spnego.allow.basic=false
spnego.allow.unsecure.basic=false
spnego.allow.localhost=false
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 en ajustant le niveau de log de Fess.
Ajoutez ce qui suit à app/WEB-INF/conf/system.properties :
spnego.logger.level=1
Ou ajoutez les loggers suivants à app/WEB-INF/classes/log4j2.xml :
<Logger name="org.codelibs.fess.sso.spnego" level="DEBUG"/>
<Logger name="org.codelibs.spnego" level="DEBUG"/>
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