Intégration SharePoint
Configurer l'intégration de SharePoint Online et OneDrive for Business avec LibreChat
LibreChat offre une intégration de niveau entreprise avec SharePoint Online et OneDrive for Business, permettant aux utilisateurs de parcourir, sélectionner et joindre facilement des fichiers depuis leur environnement Microsoft 365 directement au sein des conversations.
Vue d'ensemble
L'intégration SharePoint permet aux utilisateurs de :
- Parcourir les bibliothèques de documents SharePoint et les fichiers OneDrive
- Sélectionnez plusieurs fichiers à la fois (jusqu'à 10 par défaut)
- Voir la progression du téléchargement en temps réel
- Joindre des fichiers depuis SharePoint aux conversations
- Maintenez la sécurité de l'entreprise avec des contrôles d'accès appropriés
Fonctionnalité Entreprise
Cette fonctionnalité nécessite Microsoft 365/SharePoint Online et est conçue pour les déploiements en entreprise utilisant l'authentification Azure Entra ID (anciennement Azure AD).
Prérequis
Avant de configurer l'intégration SharePoint, assurez-vous de disposer des éléments suivants :
- Authentification Azure Entra ID configurée et fonctionnelle
- Réutilisation de jetons activée (
OPENID_REUSE_TOKENS=true) - Une portée d'API exposée pour LibreChat, telle que
api://<client-id>/access_as_user - Accès administrateur à votre tenant Azure pour les autorisations d'application
- HTTPS activé (requis pour les environnements de production)
Exigence critique
L'intégration SharePoint ne fonctionnera pas sans OPENID_REUSE_TOKENS=true car elle repose sur le flux de jeton « on-behalf-of » pour accéder aux API Microsoft Graph.
Configuration de l'enregistrement d'application Azure
Étape 1 : Configurer les autorisations API
- Accédez à l'enregistrement de votre application dans le Azure Portal
- Allez dans API permissions dans le menu de gauche
- Cliquez sur Add a permission
Étape 2 : Exposer et accorder une portée d'API LibreChat
Le flux « on-behalf-of » nécessite le jeton d'accès OpenID initial pour cibler votre API LibreChat, et non Microsoft Graph. Exposez une étendue (scope) d'API afin qu'Azure puisse émettre un jeton avec LibreChat comme audience.
- Allez dans Expose an API dans le menu de gauche
- Définissez l'Application ID URI sur
api://<client-id>si elle n'est pas déjà configurée - Cliquez sur Add a scope
- Nommez la portée
access_as_user - Enregistrez la portée (scope), puis copiez la valeur complète de la portée :
api://<client-id>/access_as_userEnsuite, accordez cette portée à l'enregistrement de l'application :
- Retourner aux API permissions
- Cliquez sur Add a permission
- Sélectionnez APIs my organization uses
- Recherchez et sélectionnez votre enregistrement d'application LibreChat
- Choisissez Delegated permissions
- Sélectionnez
access_as_user - Cliquez sur Add permissions
Utilisez la valeur de portée api://<client-id>/access_as_user complète dans OPENID_SCOPE plus loin dans ce guide.
Étape 3 : Ajouter les autorisations SharePoint
Pour l'interface du sélecteur de fichiers :
- Sélectionnez SharePoint dans la liste des API
- Choisissez Delegated permissions
- Rechercher et sélectionner :
AllSites.Read- Lire les éléments dans toutes les collections de sites
- Cliquez sur Add permissions
Étape 4 : Ajouter les autorisations Microsoft Graph
Pour les téléchargements de fichiers :
- Cliquez à nouveau sur Add a permission
- Sélectionnez Microsoft Graph
- Choisissez Delegated permissions
- Rechercher et sélectionner :
Files.Read.All- Lire tous les fichiers auxquels l'utilisateur peut accéder
- Cliquez sur Add permissions
Étape 5 : Accorder le consentement de l'administrateur
- Après avoir ajouté les permissions, vous les verrez listées
- Cliquez sur Grant admin consent for [Your Organization]
- Confirmez le consentement dans la fenêtre contextuelle
Vos permissions devraient ressembler à ceci :
| Nom de l'API / des permissions | Type | Description | Statut |
|---|---|---|---|
| Microsoft Graph - Files.Read.All | Delegated | Lire tous les fichiers auxquels l'utilisateur peut accéder | ✅ Accordé |
| SharePoint - AllSites.Read | Delegated | Lire les éléments dans toutes les collections de sites | ✅ Accordé |
| LibreChat - access_as_user | Delegated | Autoriser LibreChat à recevoir un jeton compatible OBO | ✅ Accordé |
Configuration de l'environnement
Ajoutez les variables d'environnement suivantes à votre fichier .env :
# OpenID token reuse and OBO-compatible audience
OPENID_REUSE_TOKENS=true
OPENID_SCOPE=openid profile email offline_access api://<client-id>/access_as_user
OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED=true
# Enable SharePoint file picker
ENABLE_SHAREPOINT_FILEPICKER=true
# Your SharePoint tenant base URL
# Format: https://[your-tenant-name].sharepoint.com
SHAREPOINT_BASE_URL=https://contoso.sharepoint.com
# SharePoint scope for the file picker
# Replace 'contoso' with your actual tenant name
SHAREPOINT_PICKER_SHAREPOINT_SCOPE=https://contoso.sharepoint.com/AllSites.Read
# Microsoft Graph scope for file downloads
SHAREPOINT_PICKER_GRAPH_SCOPE=Files.Read.AllNom du locataire
Assurez-vous de remplacer contoso dans les exemples ci-dessus par le nom réel de votre tenant SharePoint. Celui-ci doit correspondre exactement à votre URL SharePoint.
Audience du scope OpenID
Remplacez <client-id> par l'ID d'application (client) de votre enregistrement d'application Azure. La portée api://<client-id>/access_as_user donne à Azure une audience spécifique à l'application pour l'assertion OBO. Si OPENID_SCOPE inclut uniquement des portées OpenID standard, Azure peut émettre un jeton d'accès avec une audience Graph qui ne pourra pas être échangé à nouveau pour un accès à SharePoint ou à Graph.
Échange de jetons Userinfo
OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED=true permet à LibreChat d'échanger le jeton d'accès de l'audience de l'application contre un jeton compatible avec les informations utilisateur (userinfo) avant d'appeler le point de terminaison userinfo OpenID. Ceci est requis pour les configurations Azure Entra ID où le OPENID_SCOPE inclut la portée de l'API LibreChat mentionnée ci-dessus.
Comment ça fonctionne
Flux d'authentification
- L'utilisateur s'authentifie via Azure Entra ID
- Lors de l'accès au sélecteur SharePoint, LibreChat échange le jeton de l'utilisateur pour un accès à SharePoint.
- Les jetons sont mis en cache pour une performance optimale (généralement 50 minutes)
- Des portées distinctes garantissent le principe du moindre privilège
Processus de sélection de fichiers
- L'utilisateur clique sur « From SharePoint » dans le menu des pièces jointes
- Le sélecteur de fichiers SharePoint Online s'ouvre dans une iframe intégrée
- L'utilisateur parcourt et sélectionne des fichiers en utilisant l'interface SharePoint familière
- Les fichiers sélectionnés sont mis en file d'attente pour le téléchargement
Processus de téléchargement
- Les fichiers sont téléchargés par lots (jusqu'à 3 téléchargements simultanés)
- L'indicateur de progression affiche le fichier actuel et le pourcentage terminé
- Les fichiers téléchargés sont joints à la conversation
- Les téléchargements ayant échoué sont relancés automatiquement
Expérience utilisateur
Accéder aux fichiers SharePoint
Une fois correctement configuré, les utilisateurs verront une nouvelle option dans le menu des pièces jointes :
- Cliquez sur l'icône de pièce jointe dans la zone de saisie du message
- Sélectionnez "From SharePoint" dans le menu
- Le sélecteur de fichiers SharePoint s'ouvrira
- Parcourez et sélectionnez les fichiers selon vos besoins
- Cliquez sur « Select » pour commencer le téléchargement
Fonctionnalités disponibles
- Sélection de fichiers multiples : Sélectionnez jusqu'à 10 fichiers à la fois
- Interface familière : Utilise le sélecteur de fichiers natif de SharePoint
- Suivi de la progression : Visualisez la progression du téléchargement en temps réel
- Gestion des erreurs : Messages clairs pour tout problème
- Localisation : Prend en charge plusieurs langues
Considérations de sécurité
Contrôle d'accès
- Seuls les fichiers auxquels l'utilisateur a l'autorisation d'accéder dans SharePoint sont disponibles
- Respecte toutes les autorisations et politiques SharePoint
- Aucun accès privilégié ni contournement des contrôles de sécurité
Sécurité des jetons
- Utilise un flux sécurisé « on-behalf-of » pour l'échange de jetons
- Les jetons sont de courte durée et sont automatiquement actualisés
- Aucun stockage à long terme des identifiants SharePoint
Isolation de la portée
- Portée SharePoint limitée aux opérations de lecture uniquement
- Portée de l'API Graph restreinte à l'accès en lecture de fichiers
- Impossible de modifier ou de supprimer des fichiers via LibreChat
Dépannage
Problèmes courants
L'option "From SharePoint" n'apparaît pas
Cause : Fonctionnalité non correctement activée ou problèmes d'authentification
Solutions :
- Vérifiez
ENABLE_SHAREPOINT_FILEPICKER=truedans.env - Confirmez que
OPENID_REUSE_TOKENS=trueest défini - Vérifier que l'utilisateur est authentifié via Azure Entra ID
- Redémarrez LibreChat après avoir modifié la configuration
Le sélecteur de fichiers ne s'ouvre pas
Cause : Permissions manquantes ou incorrectes
Solutions :
- Vérifiez que les autorisations SharePoint sont accordées dans Azure
- Assurez-vous que le consentement de l'administrateur a été fourni
- Vérifiez que
SHAREPOINT_BASE_URLcorrespond exactement à votre tenant - Confirmez que
SHAREPOINT_PICKER_SHAREPOINT_SCOPEutilise l'URL complète du tenant, telle quehttps://contoso.sharepoint.com/AllSites.Read - Confirmer que HTTPS est activé en production
Le sélecteur de fichiers s'ouvre sur une page blanche
Cause : Azure peut rejeter l'échange « on-behalf-of » parce que le jeton d'accès OpenID a une audience incorrecte, ou parce que l'échange de jeton userinfo n'est pas activé.
Solutions :
- Confirmez que votre inscription d'application Azure dispose d'une étendue d'API exposée, telle que
api://<client-id>/access_as_user - Ajoutez cette portée complète à
OPENID_SCOPE - Définissez
OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED=true - Redémarrez LibreChat et reconnectez-vous afin qu'Azure émette de nouveaux jetons OpenID
Les téléchargements échouent ou expirent
Cause : Autorisations de l'API Graph ou problèmes réseau
Solutions :
- Vérifiez que l'autorisation
Files.Read.Allest accordée - Vérifier la connectivité réseau vers SharePoint
- Assurez-vous que les jetons n'ont pas expiré (ré-authentifiez-vous si nécessaire)
- Vérifiez la console du navigateur pour des messages d'erreur spécifiques
Mode débogage
Pour le dépannage, activez la journalisation de débogage :
DEBUG_LOGGING=true
DEBUG_CONSOLE=trueCela fournira des journaux détaillés concernant :
- Processus d'échange de jetons
- Appels API vers SharePoint et Graph
- Progression du téléchargement et erreurs
- Flux d'authentification
Optimisation des performances
Mise en cache des jetons
- Les jetons sont mis en cache pour réduire la surcharge liée à l'authentification.
- La durée du cache correspond à la durée de vie du jeton (généralement 50 minutes)
- Actualisation automatique avant expiration
Téléchargements simultanés
- Jusqu'à 3 fichiers téléchargés simultanément
- Empêche de surcharger le navigateur ou le serveur
- Optimise à la fois pour la vitesse et la stabilité
Considérations sur la taille des fichiers
- Les fichiers volumineux peuvent prendre du temps à être téléchargés
- L'indicateur de progression aide à gérer les attentes des utilisateurs
- Tenez compte de vos limites de téléchargement de fichiers dans la configuration de LibreChat
Meilleures pratiques
Pour les administrateurs
- Audits de permissions réguliers : Examinez périodiquement les permissions de l'application
- Surveiller l'utilisation : Suivre l'utilisation de l'intégration SharePoint dans les journaux
- Mise à jour de la documentation : Maintenez la documentation interne à jour avec les spécificités de votre tenant
- Test Thoroughly : Vérifiez la fonctionnalité après toute modification apportée à Azure AD
Pour les utilisateurs finaux
- Organisation des fichiers : Des bibliothèques SharePoint bien organisées améliorent l'expérience utilisateur
- Tailles de fichiers : Soyez attentif aux fichiers volumineux qui peuvent ralentir les conversations
- Permissions : Assurez-vous d'avoir accès aux fichiers avant de les partager
- Téléchargements patients : Prévoyez du temps pour les fichiers multiples ou volumineux
Configuration avancée
Scopes personnalisés
Pour les organisations ayant des exigences spécifiques, vous pouvez personnaliser les scopes :
# Example: Limiting to specific site collections
SHAREPOINT_PICKER_SHAREPOINT_SCOPE=https://contoso.sharepoint.com/sites/Engineering/AllSites.Read
# Example: Using more restrictive Graph permissions
SHAREPOINT_PICKER_GRAPH_SCOPE=Files.ReadIntégration avec les barrières d'information
Si votre organisation utilise des barrières d'information (Information Barriers) :
- L'intégration SharePoint respecte toutes les politiques de barrière
- Les utilisateurs ne voient que le contenu auquel ils sont autorisés à accéder
- Aucune configuration supplémentaire n'est requise
Documentation associée
Que pensez-vous de ce guide ?