Aperçu
La fonctionnalité multi-locataire de Fess permet d’exploiter plusieurs locataires (organisations, départements, clients, etc.) de manière isolée avec une seule instance de Fess.
En utilisant la fonctionnalité d’hôte virtuel, vous pouvez fournir pour chaque locataire :
Une interface de recherche indépendante
Du contenu isolé
Un design personnalisé
L’hôte virtuel courant se reflète dans les résultats de recherche, les labels, le contenu associé, les requêtes associées, le design (thème), et les autres fonctionnalités de Fess.
Fonctionnalité d’hôte virtuel
L’hôte virtuel est une fonctionnalité qui fournit différents environnements de recherche en fonction du nom d’hôte de la requête HTTP.
Fonctionnement
L’utilisateur accède à
tenant1.example.comFess identifie le nom d’hôte
Applique la configuration de l’hôte virtuel correspondant
Affiche le contenu et l’interface spécifiques au locataire
Configuration des en-têtes d’hôte virtuel
Pour activer la fonctionnalité d’hôte virtuel, configurez la correspondance entre les en-têtes de la requête HTTP et les clés d’hôte virtuel. Deux méthodes sont disponibles :
Écran d’administration (recommandé) : Renseignez le champ « Hôte virtuel » dans « Système » → « Général ». Cette valeur est enregistrée comme paramètre système et conservée après redémarrage. Elle a priorité sur
virtual.host.headersdansfess_config.properties.Fichier de configuration : Définissez la propriété
virtual.host.headersdansfess_config.properties.
Quelle que soit la méthode choisie, le format de la valeur est identique.
Format de configuration
Spécifiez chaque entrée au format NomEnTête:ValeurEnTête=CléHôteVirtuel, une par ligne :
Pour plusieurs hôtes virtuels, séparez les entrées par des retours à la ligne.
Comportement de la correspondance
À chaque requête reçue, Fess compare la valeur de l’en-tête dont le nom correspond à chaque ligne configurée avec la valeur d’en-tête définie dans cette ligne.
La comparaison des valeurs d’en-tête est insensible à la casse.
Les lignes sont évaluées de haut en bas ; la clé d’hôte virtuel de la première ligne correspondante est appliquée.
Si aucune ligne ne correspond, la requête est traitée sans hôte virtuel (environnement commun).
Le résultat de l’évaluation est mis en cache par requête.
Restrictions des clés d’hôte virtuel
Les clés d’hôte virtuel ont les restrictions suivantes :
Seuls les caractères alphanumériques et les underscores (
a-zA-Z0-9_) sont autorisés. Les autres caractères sont automatiquement supprimés.Les noms de clés suivants sont réservés et ne peuvent pas être utilisés :
admin,common,error,login,profile
Configuration via l’écran d’administration
Configuration du crawl
Vous pouvez isoler le contenu en spécifiant l’hôte virtuel dans la configuration du crawl Web :
Connectez-vous à l’écran d’administration
Créez une configuration de crawl dans « Crawler » → « Web »
Sélectionnez la clé d’hôte virtuel configurée dans le champ « Hôte virtuel » (sélection multiple possible)
Le contenu crawlé avec cette configuration ne sera recherchable que sur l’hôte virtuel spécifié
Note
Le champ « Hôte virtuel » est disponible dans les configurations de crawl Web, système de fichiers et datastore. La clé d’hôte virtuel sélectionnée ici est associée à chaque document crawlé et est utilisée pour filtrer les résultats lors de la recherche selon l’hôte virtuel courant.
Contrôle d’accès
Combinaison d’hôte virtuel et de rôles
En combinant les hôtes virtuels avec le contrôle d’accès basé sur les rôles, un contrôle d’accès plus granulaire est possible.
Configurez l’hôte virtuel et les permissions ensemble dans la configuration du crawl :
Recherche basée sur les rôles
Pour plus de détails, consultez Configuration de la recherche basée sur les rôles.
Personnalisation de l’interface
Vous pouvez personnaliser l’interface pour chaque hôte virtuel.
Application de thèmes
Appliquer différents thèmes par hôte virtuel :
Configurez le thème dans « Système » → « Design »
Spécifiez le thème dans la configuration de l’hôte virtuel
CSS personnalisé
Pour appliquer un CSS personnalisé par hôte virtuel, éditez les fichiers CSS dans l’écran d’administration sous « Système » → « Design ». Vous pouvez également placer des templates personnalisés dans le répertoire de vue correspondant à la clé de l’hôte virtuel.
Configuration des labels
Limiter les labels affichés par hôte virtuel :
Spécifiez l’hôte virtuel dans la configuration du type de label
Le label ne sera affiché que sur l’hôte virtuel spécifié
Accès via l’API
Les requêtes à l’API de recherche voient également leur hôte virtuel déterminé par le nom d’hôte de la requête (l’en-tête configuré, généralement l’en-tête Host), de la même façon que pour l’interface utilisateur. Par exemple, une requête destinée à tenant1.example.com est automatiquement limitée à l’hôte virtuel tenant1, et seul le contenu de cet hôte virtuel est inclus dans les résultats de recherche.
Requête API
Pour s’authentifier avec un jeton d’accès, spécifiez-le dans l’en-tête Authorization au format Bearer :
Note
Les jetons d’accès ne sont pas liés à un hôte virtuel particulier. Un jeton est valide pour tous les hôtes virtuels ; l’hôte virtuel ciblé est déterminé par le nom d’hôte de destination de la requête. Envoyer le même jeton vers un nom d’hôte différent le rattache à un autre hôte virtuel. Si vous souhaitez contrôler la portée d’accès indépendamment de l’hôte virtuel, combinez cette fonctionnalité avec le contrôle d’accès basé sur les rôles (Configuration de la recherche basée sur les rôles).
Configuration DNS
Exemple de configuration DNS pour réaliser le multi-locataire :
Sous-domaines vers le même serveur
Configuration de reverse proxy
Exemple de configuration de reverse proxy avec Nginx :
Isolation des données
Si une isolation complète des données est nécessaire, envisagez les approches suivantes :
Isolation au niveau de l’index
Utiliser des instances et des index Fess séparés pour chaque locataire :
Note
index.document.search.index ne peut être défini qu’à une seule valeur par instance. Pour une isolation complète au niveau de l’index, vous devez exécuter des instances Fess séparées par locataire ou implémenter du code personnalisé. Pour un multi-locataire classique, l’isolation logique via la fonctionnalité d’hôte virtuel est suffisante.
Bonnes pratiques
Convention de nommage claire : Utiliser une convention de nommage cohérente pour les hôtes virtuels et les rôles
Tests : Tester suffisamment le fonctionnement de chaque locataire
Surveillance : Surveiller l’utilisation des ressources par locataire
Documentation : Documenter la configuration des locataires
Limitations
L’écran d’administration est partagé entre tous les locataires
Les paramètres système affectent tous les locataires
Certaines fonctionnalités peuvent ne pas être compatibles avec les hôtes virtuels
Informations de référence
Configuration de la recherche basée sur les rôles - Contrôle d’accès basé sur les rôles
Hôtes virtuels - Détails de la configuration des hôtes virtuels
Conception de page - Personnalisation du design